AngularJS$watch回调触发,但视图没有变化



我使用 rest api 从 SharePoint 组中获取用户,如果当前用户存在于该特定组中,则表单(视图(必须有一些额外的选项和按钮可见。因此,我使用 $watch 来检测分配给 rest api 返回值的变量中的更改,并在$watch回调中定义视图中的更改。现在,当 Rest api 返回$watch函数触发,但视图仍未更新。

如果我执行,

angular.element('[ng-controller=controllerName]').scope().$apply();

在控制台中,我的表单加载正常。

如果您使用Angular的$http服务来提出请求,它将自动处理视图的更新。如果您在没有它的情况下提出请求,则需要告诉 Angular 数据已更改。

虽然您可以使用手表,但这不是实现这一目标的最佳方式。我建议使用$http。如果不能,只需在响应函数中调用 $timeout((。

另外,关于这一点:angular.element('[ng-controller=controllerName]').scope().$apply();

如果你在控制器中调用它,你可以简单地调用scope.$apply((,不需要访问DOM。不过,这一行意味着您的整体方法存在问题。

最新更新