【发布时间】:2012-10-11 12:13:09
【问题描述】:
我尝试这样做:
myData = {weight: 100, anotherWeight: 120.55}; // when my data is plain json - all work
$.when($.getJSON(url, {param}, function(data) {myData = data} ).
//when i got it from ajax - dosn't work
then(function(){
var taskModel = function(data)
{
var self = this;
ko.mapping.fromJS(data, {}, self);
this.computedWeight = ko.computed(function () { return self.weight() +
' ---- ' +
self.anotherWeight() + ' kg'; });
}
ko.applyBindings(new taskModel(myData));
});
<input type="text" data-bind="value: weight"/><br/>
<input type="text" data-bind="value: anotherWeight"/><br/>
<span data-bind="text: computedWeight"></span>
第一次 - 加载后 - computedWeight 计算正确。但是当我改变 weight 或 anotherWeight 字段时 - computedWeight 不会改变。
谢谢。
【问题讨论】:
-
是否为服务器返回了正确的数据?成功回调中返回什么?请看看这个jsfiddle
-
谢谢。在 jsfiddle - jsfiddle.net/EfRj/4 - 一切正常。但在我的情况下 - 未计算计算字段。我将尝试调查 ajax 响应。
标签: knockout.js computed-observable computed-values