获得一次性绑定以适用于ng-if

时间:2016-07-08 22:00:18

标签: javascript angularjs

这个问题一直是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}}最终会给我一些我想要的结果,但代价是一个额外的,无用的观察者,对吗?

进一步修改我的编辑内容:由于多种原因,这不是一个很好的解决方案。

编辑2

我的问题源于vm.building.name等待API调用,因此错过了第一个$watch摘要(我认为)。所以不是&#34;一次性&#34;如有角度所定义,有没有办法让ng-if在第一次设置vm.building.name之后直接执行它的事情然后退出?

1 个答案:

答案 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

这会有效!

干杯!