一尘不染

如何在页面加载时执行AngularJS控制器功能?

angularjs

目前,我有一个Angular.js页面,它允许搜索并显示结果。用户单击搜索结果,然后单击“后退”按钮。我希望再次显示搜索结果,但是我不知道如何触发搜索执行。详细信息如下:

  • 我的Angular.js页面是一个搜索页面,带有一个搜索字段和一个搜索按钮。用户可以手动键入查询并按下按钮,然后会触发ajax查询并显示结果。我用搜索词更新了网址。一切正常。
  • 用户单击搜索结果,然后转到另一个页面-效果也不错。
  • 用户单击后退按钮,然后返回到我的角度搜索页面,并显示正确的URL,包括搜索词。一切正常。
  • 我已将搜索字段值绑定到URL中的搜索词,因此它包含了预期的搜索词。一切正常。

如何使搜索功能再次执行而无需用户按下“搜索按钮”?如果是jQuery,那么我将在documentready函数中执行一个函数。我看不到Angular.js等效项。


阅读 354

收藏
2020-07-04

共1个答案

一尘不染

一方面,如@ Mark-Rajcok所说,您可以使用私有内部函数:

// at the bottom of your controller
var init = function () {
   // check if there is query in url
   // and fire search in case its value is not empty
};
// and fire it after definition
init();

您也可以看看ng-init指令。实现将非常像:

// register controller in html
<div data-ng-controller="myCtrl" data-ng-init="init()"></div>

// in controller
$scope.init = function () {
    // check if there is query in url
    // and fire search in case its value is not empty
};

但是要小心,因为角度文档暗示(自v1.2起)不要ng- init为此使用。但是imo取决于您应用程序的体系结构。

ng-init曾想将后端的值传递给angular应用程序:

<div data-ng-controller="myCtrl" data-ng-init="init('%some_backend_value%')"></div>
2020-07-04