anglejs – KO.Computed等效于Angular/Breeze Initializer

前端之家收集整理的这篇文章主要介绍了anglejs – KO.Computed等效于Angular/Breeze Initializer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
试图更深入地了解Angular如何对待数据绑定和理解更好,有一件事很难让我的头脑 –

在Knockout中,我使用一个计算来跟踪属性的更改。在这个角度来说,把这个逻辑转化为这个观点,这对我来说是微不足道的,但如果这样做,我明白了。

我的问题是当我用Breeze / Angular初始化一个新的实体时,如何创建类似于计算的属性,在实体属性发生更改时通知它们?

myEntity.fullName = ko.computed(function () {
    return myEntity.firstName + ' ' + myEntity.LastName;
});

在Angular将相当于

myEntity.fullName = function () {
    return myEntity.firstName + ' ' + myEntity.LastName;
};

这样做是否正确跟踪实体?

你是正确的,只是使它成为一个功能。如果您所示的实体被添加到$ scope,那么你将访问这样的属性
<span class="fullname">{{ user.fullName() }}</span>

每当Angular运行$ digest循环时,它将检查对bound属性的更改。在这种情况下,这意味着它将调用fullName()函数并检查结果是否已更改。如果有的话,任何具有附加到该项目的$ watch的东西(包括简单绑定)将被通知该更改。

然而,这种技术的一个注意事项是确保在您的功能中执行的操作相对较快,也没有副作用。这样的绑定函数将在整个应用程序中被多次调用

如果需要一个更复杂的函数,那么最好在控制器中处理它,并在更改对象时手动更新对象上的属性

猜你在找的Angularjs相关文章