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

2024-06-19

这个问题已经被之前问过 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是第一次设置然后退出吗?


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

修改你的ng-if并让它变得更简单

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

请找到工作的笨蛋:https://plnkr.co/edit/QA6ZA7e0zHnN45oQWzQH?p=preview https://plnkr.co/edit/QA6ZA7e0zHnN45oQWzQH?p=preview

这会起作用的!

Cheers!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获得一次性绑定以适用于 ng-if 的相关文章

随机推荐