我正在尝试从 knockout.js observableArray 对象中提取唯一属性,以填充下拉菜单。作为新的淘汰赛,我真的很挣扎!
我想遍历联系人列表,并使用 observableArray 中每个人对象的唯一值填充下拉菜单。因此,在下面的代码示例中,我希望在下拉菜单中填充“类型”人员列表 - 家人、朋友等。
在谷歌上找了一个类似的函数,但是它不返回任何值,即使我console.log 结果?
//dummy data more rows in actual code...
var people = [
{ name: "Contact 1", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "family" },
{ name: "Contact 2", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "friend" }
];
function ContactsViewModel(people) {
var self = this;
self.contacts = ko.observableArray(people);
self.uniqueSelect = ko.dependentObservable(function() {
return( ko.utils.arrayGetDistinctValues(self.contacts().type).sort());
}, self);
};
ko.applyBindings(new ContactsViewModel(people));
和 HTML 模板
<p>Show me: <select data-bind="options: ContactsViewModel.uniqueSelect"></select></p>
任何帮助表示赞赏,作为菜鸟我迷路了!谢谢