我是 AngularJS 的新手。我有一个登录 Controller ,它验证用户详细信息,并在成功调用服务时将用户详细信息保存在 localStorage 中,并将详细信息分配给同一服务中的变量,该变量用于从各种 View 检索用户详细信息。登录后,当我将用户重定向到之前启动的另一个 View (已访问页面)时,我将看不到新更新的用户详细信息,直到刷新页面( View ),这意味着 View 不知道我的用户变量的值服务已经改变。请问我如何让它知道并更改 View 范围值。
最佳答案
在 Controller 中创建一个方法来处理刷新,即:
$scope.refresh = function() {
// Do things that load data here, probably with promises
};
然后使用它在第一次查看时开始加载 Controller ,即调用 Controller 中的刷新函数:
$scope.refresh();
然后您可以灵活地执行诸如分配事件以强制刷新数据之类的操作,例如(在 Controller 中):
$rootScope.$on("app.refresh.foo", function() {
$scope.refresh();
});
然后在其他地方,广播如下:
$rootScope.$broadcast("app.refresh.foo");
如果 View 已加载,它将调用刷新函数。
此方法的一大优点是您可以更加灵活地向刷新功能添加所需的内容。您不必设置单独的观察者。
关于angularjs - 如何让发起的Controller知道范围值已经改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325030/