AngularJS:数据正在控制器中更新,但它没有显示在HTML中

时间:2015-01-05 02:15:25

标签: javascript angularjs html5 angularjs-scope

在我的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}}。有人能帮助我吗?

1 个答案:

答案 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/