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

Get one-time binding to work for ng-if

本文关键字:适用于 ng-if 绑定 一次性 获取      更新时间:2023-09-26

这个问题以前有人问过,但我无法让该解决方案起作用,所以我想知道我的细节是否有不同之处。

代码非常非常简单:

<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摘要(我认为)。因此,有没有办法让ng-if在第一次设置vm.building.name后直接做它的事情,然后退出?

好吧,在这里,您正在检查一次性数据绑定vm.building.name undefined值,并且由于它是一次性数据绑定,因此条件将始终为假。

修改您的ng-if并使其更简单

<h1 ng-if="::vm.building.name">update {{::vm.building.name}}</h1>

请查找工作堆积器:https://plnkr.co/edit/QA6ZA7e0zHnN45oQWzQH?p=preview

这将起作用!

干杯!