Без остальной части кода, его трудно точно сказать, как это будет вести себя. При этом вы делаете несколько очень странных вещей, которые я бы рекомендовал вам избежать.
Во-первых, определение всех, кроме простейших режимов просмотра в качестве объектных литералов, вызовет у вас боль. Все, что имеет функцию или вычисленное, почти наверняка будет вести себя странно или, скорее всего, совсем не так, если будет определено так.
Я бы рекомендовал использовать функцию-конструктор для ваших моделей просмотра.
var Viewmodel = function(activate, allEmployees) {
var self = this;
self.activate = activate;
self.allEmployees = ko.observableArray(allEmployees);
self.sortedEmployees = ko.computed(function() {
return self.allEmployees().sort(function(f,s) {
//your sort function
});
});
};
var vm = new Viewmodel(activate, allemployees);
Этот метод имеет ряд преимуществ. Во-первых, он многоразовый. Во-вторых, вы можете правильно ссылаться на свои свойства во время строительства, например, во время определения computed
. Необходимо вычислить ссылку, по крайней мере, наблюдаемое свойство во время определения, чтобы оно было реактивным.
Ваша следующая проблема заключается в том, что вычисленное определение не является функцией, а объектом. Это даже не юридический объект, у него есть возврат. Этот код даже не компилируется. Это просто неправильно. На этом этапе ясно, что Knockout Documentation: вычислено с помощью function
.
Ваша последняя проблема заключается в том, что ваша функция сортировки ссылается на вещи вне модели просмотра: SelectedOptionID()
. Это не обязательно остановит его от работы, но в целом это плохая практика.
ok Я, должно быть, удалил функцию при форматировании. sortedallemployees: ko.computed (function() { return ko.computed (function() {return allemployees.sort – user1167777