Я новичок в knockoutJS, но я работаю над сохранением этого объекта Vessel в массив Observable. В то же время мне нужно иметь возможность искать конкретный объект в массиве по его уникальному id (mmsi) или его имени. Я предполагаю, что для этого массив должен быть ассоциативным, чтобы вы могли искать все ключи до тех пор, пока не найдете искомое значение. Тем не менее, я не уверен в своей реализации этого и могу использовать некоторые рекомендации.Как создать ассоциативный массив объектов с помощью KnockoutJS
Вот что у меня есть:
function Vessel(data) {
this.mmsi = ko.observable(data.mmsi);
this.lat = ko.observable(data.latitude);
this.long = ko.observable(data.longitude);
this.trueheading = ko.observable(data.trueheading);
}
function VesselViewModel() {
// Data
var self = this;
self.vessels = new ko.observableArray([]);
self.assoc = {};
// Operations
self.addVessel = function(m, lt, lg, th) {
self.vessels.push(new Vessel({
mmsi: m,
lat: lt,
long: lg,
trueheading: th
}));
};
self.removeVessel = function(vessel) {
self.vessels.remove(vessel)
};
self.UpdateVessel = function(key, item) {
if (self.assoc[key]) {
self.assoc[key].value(item)
} else {
self.vessels.push(VesselViewModel.assoc[key] = {
key: key,
value: ko.observable(value)
});
}
}
}
Мои извинения, если это совершенно неправильно, но любая помощь приветствуется. Спасибо.
Это звучит как [XY-задачи] (http://meta.stackexchange.com/q/66377/162730): * почему * Как вы думаете, что вам нужно 'UpdateVessel' с эта конкретная подпись, то есть почему вам нужен «ключ» в качестве аргумента? А что такое '.value()' функция? Также обратите внимание, что вы вызываете 'VesselViewModel.assoc [key]', который * not * совпадает с 'self.assoc [key]'. Обновите свой вопрос, включите (перепрограммируйте) фактический сценарий/задачу/todo, возможно, с кодом представления для него. – Jeroen