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

时间:2017-07-13 14:40:43

标签: javascript angularjs dom data-synchronization

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

如果我执行,

app.use(box.test.bind(box));

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

1 个答案:

答案 0 :(得分:0)

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

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

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

如果你在你的控制器中调用它,你可以简单地调用scope。$ apply(),不需要访问DOM。这一行暗示了您整体方法的问题。