我在ng-if="ctrl.zoo"
中有一个条件(在某个指令中,ctrl.zoo = ctrl.foo && ctrl.bar
)。问题是bar
通过异步函数调用进行初始化,并且由于某种原因,angularJS不会更新我的UI,即使我将bar
包括在我的范围内。我用谷歌搜索,观察其他变量为另一个变量分配一个新值(基本上是观察bar
的变化)是一个坏主意。如果我内联ctrl.zoo
(例如ng-if="ctrl.foo && ctrl.bar
“`),它确实可以正常工作。是否有任何简单的解决方法?
答案 0 :(得分:4)
如果在控制器中分配了zoo = foo && bar
,则无论zoo
的值是否更改,值bar
都将保持不变。
如果您想更新zoo
,则有两种选择:
异步函数调用完成后,将zoo
的值再次更新为foo && bar
。
在您的指令控制器中编写一个名为getZoo()
的函数,该函数返回foo && bar
。在指令的模板中使用该函数,并在指令的作用域上更新bar
的值时,该作用域将运行摘要循环,并且该函数将返回新值。在模板中内联ctrl.foo && ctrl.bar
的原因是因为您实际上是在这样做。