В коде присутствует много ошибок javascript.
Я разветвил jsFiddle. Поскольку в представлении присутствуют другие элементы, которых нет в модели представления, появляются ошибки для одного и того же. Я намеренно оставил это так, чтобы вы могли продолжить с того места, на котором остановились. Основная идея о том, как этого добиться, присутствует.
jsFiddle присутствует http://jsfiddle.net/rupesh_kokal/k7LHu/3/
Ниже представлен вид (или html):
<table>
<tbody data-bind="template: {name: 'budgets', foreach: BudgetLine}">
</tbody>
</table>
<script id='budgets' type="text/html">
<tr>
<td>
<input type="text" data-bind="value:Title"></input>
</td>
<td>
<input type="text" data-bind="value:Amount"></input>
</td>
<td>
<span data-bind="text:Modified" />
</td>
<td>
<select data-bind="options:$root.Account,optionsCaption:'select Account', optionsText:'Title', OptionsValue:'Id', selectedOptions:Account().Id",size="5", multiple="true"></select>
</td>
<td>
<span data-bind="text:CostCenterId"></span>
</td>
<td>
<select data-bind="options:$root.Costcenter,optionsCaption:'cost center', optionsText:'Title', optionsValue:'Id', value:CostCenterId "></select>
</td>
<td>
<span data-bind="text:CostCenter().Company().Title"></span>
</td>
<td>
<input type="button" data-bind="click: $root.deleteItem" value="Delete" />
<input type="button" data-bind="click: $root.saveItem" value="save" />
</td>
</tr>
</script>
Ниже приведена модель представления:
function ModViewModel() {
var self = this;
self.Accounts = ko.observableArray([
{
Id: 1,
Title: "Account #1"},
{
Id: 2,
Title: "Account #2"},
{
Id: 3,
Title: "Account #3"},
{
Id: 2,
Title: "Account #1"}
]);
self.BudgetLine = ko.observableArray([]);
self.BudgetLine.push(new BudgetLineItem(1, "Budget #1", [1, 2], self));
self.BudgetLine.push(new BudgetLineItem(2, "Budget #2", [1, 2], self));
}
function BudgetLineItem(id, title, accountIds, parentModel) {
var self = this;
self.Id = id;
self.Title = title;
self.Account = ko.observableArray([]);
if (accountIds.length > 0) {
for (var i = 0, len = accountIds.length; i < len; i++) {
self.Account.push(new AccountLineItem(accountIds[i], parentModel));
}
}
else {
self.Account.push(new AccountLineItem(accountIds, parentModel));
}
}
function AccountLineItem(id, rootModel) {
var self = this;
self.Id = id;
self.Value = ko.computed(function() {
return rootModel.Accounts()[self.Id];
});
}
ko.applyBindings(new ModViewModel());
person
Rups
schedule
01.12.2012