这个问题已经被之前问过 https://stackoverflow.com/questions/23969926/angular-lazy-one-time-binding-for-expressions,但我无法让该解决方案发挥作用,所以我想知道我的具体情况是否有不同。
代码非常非常简单:
<h1 ng-if="vm.building.name !== undefined">update {{vm.building.name}}</h1>
正如所写,这段代码运行良好。如果vm.building.name
设置完毕后,标签出现。
但是,如果我尝试使一次性绑定起作用,那就是:
<h1 ng-if="::vm.building.name !== undefined">update {{vm.building.name}}</h1>
该标签根本不出现。我尝试过变体:
<h1 ng-if="::(vm.building.name !== undefined)">update {{vm.building.name}}</h1>
还是不行。这是一件简单得令人沮丧的事情。天哪,代码似乎可以在jsfiddle https://jsfiddle.net/aqn6jajz/,但我无法让它适用于我的特定应用程序。某处有设置吗?我需要改变一些随机的琐事吗?
我正在使用角度吗1.5.7
,如果这很重要的话。
EDIT
<h1 ng-if="vm.building.name !== undefined">update {{::vm.building.name}}</h1>
也就是说,设置{{::vm.building.name}}
最终给了我想要的结果,但代价是额外的、无用的观察者,对吧?
对我的编辑进行进一步编辑:由于多种原因,这不是一个很好的解决方案。
EDIT 2
我的问题源于这样一个事实vm.building.name
等待 API 调用,因此错过了第一个$watch
消化(我认为)。因此,有没有一种方法可以代替角度定义的“一次性”ng-if
之后直接做它的事情vm.building.name
是第一次设置然后退出吗?