猿问

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

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

目前,我有一个Angular.js页面,允许搜索和显示结果。用户单击搜索结果,然后单击“后退”按钮。我希望搜索结果再次显示,但我无法确定如何触发搜索来执行。细节如下:

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

如何使搜索函数再次执行,而不需要用户按下“搜索按钮”?如果是jQuery,那么我将在document战备函数中执行一个函数。我看不到Angular.js的等价物。


拉莫斯之舞
浏览 696回答 3
3回答

杨魅力

你可以用私人的内在功能来逃避://&nbsp;at&nbsp;the&nbsp;bottom&nbsp;of&nbsp;your&nbsp;controllervar&nbsp;init&nbsp;=&nbsp;function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;//&nbsp;check&nbsp;if&nbsp;there&nbsp;is&nbsp;query&nbsp;in&nbsp;url &nbsp;&nbsp;&nbsp;//&nbsp;and&nbsp;fire&nbsp;search&nbsp;in&nbsp;case&nbsp;its&nbsp;value&nbsp;is&nbsp;not&nbsp;empty};//&nbsp;and&nbsp;fire&nbsp;it&nbsp;after&nbsp;definitioninit();你也可以看看吴茵指令。实施将非常类似于://&nbsp;register&nbsp;controller&nbsp;in&nbsp;html<div&nbsp;data-ng-controller="myCtrl"&nbsp;data-ng-init="init()"></div>//&nbsp;in&nbsp;controller$scope.init&nbsp;=&nbsp;function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;check&nbsp;if&nbsp;there&nbsp;is&nbsp;query&nbsp;in&nbsp;url &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;and&nbsp;fire&nbsp;search&nbsp;in&nbsp;case&nbsp;its&nbsp;value&nbsp;is&nbsp;not&nbsp;empty};但要小心角文档意味着(从V1.2开始)不使用ng-init为了这个。然而,它取决于您的应用程序的架构。我用ng-init当我想将一个值从后端传递到角应用程序时:<div&nbsp;data-ng-controller="myCtrl"&nbsp;data-ng-init="init('%some_backend_value%')"></div>

慕神8447489

尝尝这个?$scope.$on('$viewContentLoaded',&nbsp;function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//call&nbsp;it&nbsp;here});

慕尼黑5688855

我永远也得不到$viewContentLoaded为我工作,而且ng-init应该只用于ng-repeat(根据文档),如果代码依赖尚未定义的元素,那么直接在控制器中调用函数也会导致错误。我就是这么做的,这对我来说很管用:$scope.$on('$routeChangeSuccess',&nbsp;function&nbsp;()&nbsp;{ &nbsp;&nbsp;//&nbsp;do&nbsp;something});除非你用ui-router..那就是:$scope.$on('$stateChangeSuccess',&nbsp;function&nbsp;()&nbsp;{ &nbsp;&nbsp;//&nbsp;do&nbsp;something});
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答