【发布时间】:2013-10-07 10:25:13
【问题描述】:
我认为这里有些地方很不对劲。我想像这样将ko.computed 添加到ko.observableArray。
在此之前我的模型是为了清晰
//var job = @Html.Raw(Json.Encode(Model.job));
//var customer = @Html.Raw(Json.Encode(Model.customer));
//var estimateMaterials = @Html.Raw(Json.Encode(Model.estimateMaterials));
//var estimate = @Html.Raw(Json.Encode(Model.estimate));
var estimateTasks = @Html.Raw(Json.Encode(Model.Tasks));
var JobPostViewModel = function(){
var self = this;
//self.customer = ko.observable(customer);
//self.job = ko.observable(job);
//self.estimateMaterials = ko.observableArray(estimateMaterials);
//self.estimate = ko.observable(estimate);
self.estimateTasks = ko.observableArray(estimateTasks);
self.estimateTasks().estLaborSubTotal = ko.computed(function () {
return (isNaN(self.EstHr)? 0: +self.EstHr) * (isNaN(self.TaskPerHourCost)? 0: +self.TaskPerHourCost);
});
};
var model = new JobPostViewModel();
ko.applyBindings(model, document.getElementById("my_job_form"));
这就是我的模型绑定。 my_job_form 是 data-bind="with:jobs",我在绑定到 estimateTasks 的表单中填充了一个表格。标记是
<tbody data-bind="foreach: $root.estimateTasks">
<tr>
<td>
<input type="text" data-bind="value: EstHr" />
<input type="hidden" data-bind="value: TaskPerHourCost" />
</td>
<td>
<input type="text" data-bind="value: estLaborSubTotal" disabled />
</td>
</tr>
</tbody>
绑定时出现错误
ReferenceError: estLaborSubTotal 未定义
我在这里做错了什么?
【问题讨论】:
-
查看我发布的答案,我认为阅读和理解会更简单一些。
标签: knockout.js knockout-mapping-plugin