我有一个项目列表。通过点击一行,我看到编辑表单。绑定工作很好,第一次点击。但无论我点击第二,第三等时间,我都会看到填充了第一次点击的值的表单。knockout.js绑定值只有一次
商品代码初始化:
self.newManager = {
UserId: ko.observable(),
CustomerId: ko.observable(),
UserName: ko.observable(),
DisplayName: ko.observable(),
Email: ko.observable(),
IsActive: ko.observable(true),
Password: ko.observable(),
ConfirmPassword: ko.observable(),
Roles: ko.observableArray()
}
了解详细信息代码:
self.getManagerDetail = function (item) {
self.newManager.UserId(item.UserId);
self.newManager.UserName(item.UserName);
self.newManager.DisplayName(item.DisplayName);
self.newManager.Email(item.Email);
self.newManager.IsActive(item.IsActive);
self.newManager.CustomerId(item.CustomerId);
self.newManager.Roles(item.Roles.$values);
self.showManagerForm("editManagerForm");
}
HTML表单:
<form class="form-horizontal" id="editManagerForm" style="display: block;" data-bind="submit: editManager">
<div class="form-group" data-bind="with: newManager">
<label class="control-label">Login</label>
<div data-bind="text: UserName"></div>
<label class="control-label" for="DisplayName1">Name</label>
<div>
<input class="form-control" id="DisplayName1" type="text" data-bind="value: DisplayName" data-val="true">
</div>
<label class="control-label" for="Email1">Email</label>
<div>
<input class="form-control" id="Email1" type="text" data-bind="value: Email" data-val="true">
</div>
<label class="control-label">Is active</label>
<div>
<input class="form-control" id="IsActive" type="checkbox" data-bind="checked: IsActive" data-val="true">
</div>
<label class="control-label">Roles</label>
<div data-bind="foreach: $root.roles">
<div class="checkbox">
<label>
<input type="checkbox" value="God" data-bind="checked: $parent.Roles, value: $data">
<span data-bind="text: $data">God</span>
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" value="MarketingGuy" data-bind="checked: $parent.Roles, value: $data">
<span data-bind="text: $data">MarketingGuy</span>
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" value="Accountant" data-bind="checked: $parent.Roles, value: $data">
<span data-bind="text: $data">Accountant</span>
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" value="Manager" data-bind="checked: $parent.Roles, value: $data">
<span data-bind="text: $data">Manager</span>
</label>
</div>
</div>
</div>
<button class="btn btn-default ajaxbutton" type="submit">Сохранить</button>
</form>
我在调试器中的步骤检查self.getManagerDetail一步。按照我的预期设置值 - self.newManager值设置为单击项目的值。
什么可能是这种行为的原因?
你可以请你的代码/ HTML从你调用'getManagerDetail'吗? – nemesv 2014-10-12 14:20:05
如果可能,请发布viewmodel代码,以便我们可以看看 – 2014-10-12 14:41:46
感谢您的参与!我找出原因并贴出来。 – IAfanasov 2014-10-12 14:43:56