1
我有以下使用KnockoutJS管理集合的簡單表單。總是在第一個位置添加一個Knockoutjs綁定記錄
我需要的是始終將新記錄在上面,也訪客1題,如果增加新的應增加..所以訪客2,訪客3,依此類推。
另外我不應該能夠刪除一個記錄,當只有1個。所以至少我應該總是有一個記錄。
這裏是我的html代碼:
<div>
<div class="panel" data-bind="foreach: contacts">
<div>
<h4>Visitor 1</h4>
</div>
<div>
<!-- ## Panel Content -->
<div >
<label>First Name</label>
<input type="text" data-bind='value: firstName' />
</div>
<div >
<label>Last Name</label>
<input type="text" data-bind='value: fathersLast' />
</div>
<div >
<label>Country</label>
<input type="text" data-bind='value: country' />
</div>
<button data-bind='click: $root.removeContact'>Delete</button> <button data-bind='click: $root.addContact'>Add New</button>
<!-- ##/Panel Content -->
</div>
</div>
</div>
這裏是我的JavaScript代碼:
var initialData = [
{ firstName: "John", fathersLast: "Smith", country : "USA"
},
{ firstName: "George", fathersLast: "Fox", country : "Canada"
}
];
var ContactsModel = function(contacts) {
var self = this;
self.contacts = ko.observableArray(ko.utils.arrayMap(contacts, function(contact) {
return { firstName: contact.firstName, fathersLast: contact.fathersLast, country: contact.country };
}));
self.addContact = function() {
self.contacts.push({
firstName: "",
fathersLast: "",
country: ""
});
};
self.removeContact = function(contact) {
self.contacts.remove(contact);
};
};
ko.applyBindings(new ContactsModel(initialData));
而且這裏更好的參考是的jsfiddle:http://jsfiddle.net/9k5uT/1/
非常感謝。
一切正常amaing..but的$ index()+ 1不是始終位於頂部的記錄。新的最高紀錄總是顯示訪客1.任何線索? – VAAA
它表示訪問者1,因爲它是數組中的第一個項目。如果您希望訪問者保留號碼,您可能需要添加「id」屬性。 – SomeKittens
我會在刪除按鈕上使用'enable'綁定,所以如果用戶不被允許刪除,那麼用戶不會看到一個「虛擬可供件」(在這種情況下,看起來活躍但不執行任何操作的按鈕)項目。 – ebohlman