首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >角度/微风初始化器中的KO.Computed等效项

角度/微风初始化器中的KO.Computed等效项
EN

Stack Overflow用户
提问于 2013-08-14 10:06:48
回答 1查看 6.6K关注 0票数 20

试图更深入地了解Angular是如何对待数据绑定的,并更好地理解它,但有一件事我很难理解-

在Knockout中,我使用计算器来跟踪属性的更改。在角度它将这个逻辑移动到视图中,这对我来说是微不足道的,但如果这是这样做的话,我可以理解。

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

代码语言:javascript
复制
myEntity.fullName = ko.computed(function () {
    return myEntity.firstName + ' ' + myEntity.LastName;
});

在Angular中是否等同于

代码语言:javascript
复制
myEntity.fullName = function () {
    return myEntity.firstName + ' ' + myEntity.LastName;
};

这是否正确地跟踪了实体?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 10:56:16

简单地将其设置为一个函数是正确的。如果将如下所示的实体添加到$scope中,则可以像这样访问该属性:

代码语言:javascript
复制
<span class="fullname">{{ user.fullName() }}</span>

每当Angular运行$digest循环时,它都会检查绑定属性的更改。在本例中,这意味着它将调用fullName()函数并检查结果是否已更改。如果是这样的话,任何附加了$watch的项目--包括简单绑定--都会收到更改通知。

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

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

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18222111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档