我在Asp.net Web Api 2上运行了一些示例,我最终将要开发的项目将使用AngularJs。我正在处理的几个数据绑定方案将实现angular $watch
,据我所知,在此函数上将deep
标志设置为true将通知新值和旧值,但不是在属性级别 - 仅在数组对象级别。最终目标是能够隔离属性更改并将此更改作为PATCH
请求发送到Web Api,而不是将整个对象作为PUT请求发送。
我的示例目前正在使用knockoutJs,该方法有一个模型,表示需要监视的属性值设置为observable(propName)
的数据。我的问题基本上是否可以将以下knockoutJs代码转换为Angular中类似的代码:
self.watchModel = function (model, callback) {
for (var key in model) {
if (model.hasOwnProperty(key) && ko.isObservable(model[key])) {
self.subscribeToProperty(model, key, function (key, val) {
callback(model, key, val);
});
}
}
}
self.subscribeToProperty = function (model, key, callback) {
model[key].subscribe(function (val) {
callback(key, val);
});
}
模型看起来类似于以下内容:
var obsEmployee = {
Id: employee.Id,
Name: ko.observable(employee.Name),
Email: ko.observable(employee.Email),
Salary: ko.observable(employee.Salary),
}
我确信Angular中有一个等效的方法,或者实现上的差异非常大,还有另一种方法。
答案 0 :(得分:0)
没有。 Angular使用脏检查而不是订阅/通知框架。因此,每个观察到的变量都是可观察的。有关详细信息,请参阅此处:http://www.sitepoint.com/understanding-angulars-apply-digest/