Ho un modello di vista che utilizza una funzione di osservazione osservabile personalizzata per l'ordinamento. Quando provo a eseguire questo, si dice: "... non ha metodi 'sortByProperty'".Come caricare le funzioni personalizzate KnockoutJS con RequireJS?
Come caricare il file handlers.js per farlo funzionare?
handlers.js:
define(['knockout'], function(ko) {
'use strict';
ko.observableArray.fn.sortByProperty = function (prop, order) {
this.sort(function (obj1, obj2) {
var result;
if (obj1[prop] == obj2[prop])
result = 0;
else if (obj1[prop] < obj2[prop])
result = -1;
else
result = 1;
return order === "desc" ? -result : result;
});
};
});
viewmodel.js:
define([
'knockout',
'js/extends/handlers'
], function(ko) {
'use strict';
var LabelsModel = function() {
var self = this;
self.availableLabels = ko.observableArray();
self.selectedLabel = ko.observable();
self.sortBy = ko.observable(); // What field to sort by
self.sortOrder = ko.observable(); // Sort order. asc or desc.
// Returns the labels for the current page
self.pagedRows = ko.computed(function() {
// Sorts the labels
return self.availableLabels.sortByProperty(self.sortBy(), self.sortOrder());
});
};
return LabelsModel;
});
Grazie. Caricarlo con requirejs ha fatto il trucco. – Sindre
@Sindre bello! Grazie e buona fortuna! – Jalayn
Non dovresti aver bisogno di renderlo globale per il tuo particolare scenario. Sembra che il tuo campione originale funzioni correttamente. Questo è il modo in cui carico le estensioni. –