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

AngularJS: data is being updated in controller but it is not shown in the HTML

本文关键字:显示 HTML 更新 控制器 AngularJS 数据      更新时间:2023-09-26

在我的AngularJS应用程序中,我有以下代码:

示例.html

<div>                           
    <p>{{name}}</p>
</div>
<div>
    <button ng-click="someFunction()"> </button>
</div>

示例控制器.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}}。有人可以帮助我吗?

角度生命周期可能需要一些时间来适应,但简而言之,角度指令只有在角度事件(如ng-click)期间才会被重新评估。 这是使用ng-click而不是onclick如此重要的原因之一。

在这种情况下,如果你的方法没有在角度事件循环中被调用(比如,它是通过jQuery、一个简单的window.onload调用或默认的window.setTimeout方法调用的),你不会看到任何变化。 您必须使用ng-event或angular的$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/