2014-10-12 63 views
0

我有一個項目列表。通過點擊一行,我看到編輯表單。綁定工作很好,第一次點擊。但無論我點擊第二,第三等時間,我都會看到填充了第一次點擊的值的表單。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值設置爲單擊項目的值。

什麼可能是這種行爲的原因?

+0

你可以請你的代碼/ HTML從你調用'getManagerDetail'嗎? – nemesv 2014-10-12 14:20:05

+0

如果可能,請發佈viewmodel代碼,以便我們可以看看 – 2014-10-12 14:41:46

+0

感謝您的參與!我找出原因並貼出來。 – IAfanasov 2014-10-12 14:43:56

回答

1

此行爲是由一個對象self.newManager綁定到兩個表單造成的。我用它來編輯和創建表單。一旦我改變代碼使用一個對象的編輯形式和另一個創建形式,它開始工作就好了。

希望它是有用的。

在事情剛剛解釋的情況下,我們再次獲得成功的魔力。

+0

你自己弄明白了 – 2014-10-12 14:44:33