试图更深入地了解Angular如何处理数据绑定并更好地理解它,有一件事很难让我理解 -
在Knockout中,我使用一个计算来跟踪属性的变化.在Angular中,它将这个逻辑移动到视图中,这对我来说是微不足道的,但如果这是我理解的方式.
我的问题是,当我使用Breeze/Angular初始化一个新实体时,如何创建类似于计算机的属性,这些属性会在实体属性发生更改时得到通知?
myEntity.fullName = ko.computed(function () {
return myEntity.firstName + ' ' + myEntity.LastName;
});
Run Code Online (Sandbox Code Playgroud)
在Angular中相当于
myEntity.fullName = function () {
return myEntity.firstName + ' ' + myEntity.LastName;
};
Run Code Online (Sandbox Code Playgroud)
这是否正确跟踪实体?
Ove*_*ous 18
简单地将它变成一个函数是正确的.如果您所显示的实体已添加到$scope,则您将访问该属性,如下所示:
<span class="fullname">{{ user.fullName() }}</span>
Run Code Online (Sandbox Code Playgroud)
每当Angular运行一个$digest循环时,它将检查绑定属性的更改.在这种情况下,这意味着它将调用该fullName()函数并检查结果是否已更改.如果有,任何$watch附加到该项目的内容(包括简单绑定)都会收到更改通知.
但是,这种技术的一个警告是确保在您的功能中执行的操作相对较快,并且没有副作用.像这样的绑定函数将在整个应用程序中多次调用.
如果需要更复杂的函数,最好在控制器中处理它,并在对象更改时手动更新对象的属性.
| 归档时间: |
|
| 查看次数: |
6433 次 |
| 最近记录: |