这个问题一直是asked before,但我无法使解决方案有效,所以我想知道我的具体内容是否有所不同。
代码非常非常简单:
<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,但我无法让它适用于我的特定应用。某处有设置吗?我需要改变一些随机的琐事吗?
如果重要的话,我是否使用了角度1.5.7
。
<h1 ng-if="vm.building.name !== undefined">update {{::vm.building.name}}</h1>
也就是说,设置{{::vm.building.name}}
最终会给我一些我想要的结果,但代价是一个额外的,无用的观察者,对吗?
进一步修改我的编辑内容:由于多种原因,这不是一个很好的解决方案。
我的问题源于vm.building.name
等待API调用,因此错过了第一个$watch
摘要(我认为)。所以不是&#34;一次性&#34;如有角度所定义,有没有办法让ng-if
在第一次设置vm.building.name
之后直接执行它的事情然后退出?
答案 0 :(得分:1)
好吧,在这里,您正在检查一次性数据绑定vm.building.name
值与undefined
,因为它是一次性数据绑定,所以此条件始终为false。
修改您的ng-if
并使其更简单
<h1 ng-if="::vm.building.name">update {{::vm.building.name}}</h1>
请找到工作的plunker:https://plnkr.co/edit/QA6ZA7e0zHnN45oQWzQH?p=preview
这会有效!
干杯!