在我的AngularJS应用程序中,我有以下代码:
example.html的
<div>
<p>{{name}}</p>
</div>
<div>
<button ng-click="someFunction()"> </button>
</div>
exampleController.js
angular.module('myApp').controller('exampleController', ['$scope', 'myService',
function($scope, myService) {
$scope.someFunction = function() {
}
function updateName() {
$scope.name = myService.getName();
}
updateName();
}]);
问题是当我点击按钮时,{{name}}仅在html中更新。 updateName()函数正在正确运行并且$ scope.name正在被正确定义,但{{name}}仅在我单击某个按钮以调用某个函数时显示。我不知道为什么在加载页面时不显示{{name}}。有人能帮助我吗?
答案 0 :(得分:1)
角度生命周期可能需要一些使用,但简而言之,角度指令只会在角度事件中重新评估,例如ng-click。这是它的一个原因。使用ng-click
代替onclick
非常重要。
在这种情况下,如果你的方法没有在角度事件周期内被调用(就像通过jQuery调用它,一个简单的window.onload
调用,或默认的window.setTimeout
方法),你不会看到任何变化。您必须使用ng-event或角度$timeout
服务。
要在应用启动时运行某些内容,您可以使用module.run
,如本页所示。
https://docs.angularjs.org/guide/module
angular.module('MyMod', []).run(
//Your code here, like
updateName();
)};
另外,请尝试在此处阅读有关生命周期的更多信息: http://onehungrymind.com/notes-on-angularjs-scope-life-cycle/