2013-07-03 62 views
0

我有一個代碼集在選擇框中動態創建「選項」。但是,由於我們使用的是Knockout,所以當我選擇新創建的選項時,點擊它就會被刪除。消失了!噗!!!!需要在組合框中使用Knockout.js保留動態創建的選項

所以,這裏的創建腳本:

function createNewGroup() 
    { 

     var htmlSelect = document.getElementById('groups'); 
     var optionValue = document.getElementById('newgroupname'); 

     if (optionValue.value === '') 
     { 
      alert('Please enter group name.'); 
      optionValue.focus(); 
      return false; 
     } 

     if (isOptionAlreadyExist(htmlSelect, optionValue.value)) 
     { 
      optionValue.value = ""; 
      alert('Group name already exists.\n\nPlease try again.'); 
      optionValue.focus(); 
      return false; 
     } 

     var selectBoxOption = document.createElement("option"); 
     selectBoxOption.value = optionValue.value; 
     selectBoxOption.text = optionValue.value; 
     htmlSelect.add(selectBoxOption, null); 

     optionValue.value = ""; 
     alert("New group has been added successfully."); 
     optionValue.focus(); 
     return true; 

    }; 

因爲這是淘汰賽觀察到的,如何保持它在框中,當我選擇它,而且,我怎麼發送新值回JSON對象。這裏有一個例子:

{ 「組」:

{ 
     "groupname" : "Administrator", 
     "attr" : { "id" : "li.attr.node_1", 
        "href" : "#", 
        "data-bind" : "click: grpMgmt('Administrator');" } 
    }, 
    { 
     "groupname" : "Guest", 
     "attr" : { "id" : "li.attr.node_2", 
        "href" : "#", 
        "data-bind" : "click: grpMgmt('Guest');" } 
    } 
] 

}

因此,管理員用戶可以創建一個新用戶,因此它可以是這樣的:

{ 「基團」:[

{ 
     "groupname" : "Administrator", 
     "attr" : { "id" : "li.attr.node_1", 
        "href" : "#", 
        "data-bind" : "click: grpMgmt('Administrator');" } 
    }, 
    { 
     "groupname" : "Guest", 
     "attr" : { "id" : "li.attr.node_2", 
        "href" : "#", 
        "data-bind" : "click: grpMgmt('Guest');" } 
    } 
], 

「用戶」:[

{ 
     "groupname" : "Joes Users", 
     "attr" : { "id" : "li.attr.node_1", 
        "href" : "#", 
        "data-bind" : "click: grpMgmt('Joe');" } 
    } 
] 

}

OK,我會停下來寫現在...謝謝...

+0

淘汰賽在哪裏? – DoctorMick

回答

0

如果您使用的淘汰賽(我不能真正看到),所有你需要做的將您的選擇框綁定到一個可觀察數組,當您需要添加一個新項目時,只需將它推到數組上,敲出就會將它添加到列表中。

淘汰賽應該基本上用更少,更簡單的代碼來替代您所包含的腳本。

+0

好的,是的,你是對的......現在,當談到KO時,我很綠。這裏是我的裝訂選擇框:

\t