javascript - How to load KnockoutJS custom functions with RequireJS? -


i have view model uses custom observablearray function sorting. when try run says: "...has no methods 'sortbyproperty'".

how should load handlers.js file make work?

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(); // field sort             self.sortorder = ko.observable(); // sort order. asc or desc.              // returns labels current page             self.pagedrows = ko.computed(function() {                 // sorts labels                 return self.availablelabels.sortbyproperty(self.sortby(), self.sortorder());             });          };          return labelsmodel;      }); 

you have first make sure knockoutjs defined, load plugins, , launch application. think how plugins libraries should loaded. here how can it:

require.config({         paths: {         jquery: 'libs/jquery-1.9.0.min',         ko: 'libs/knockout-2.2.1.min'     } });  require(['jquery', 'ko'],      function($, ko) {         // ensure ko in global namespace ('this')          if (!this.ko) {             this.ko = ko;         };          requirejs(['handlers'],             function () {                  require(['app'],                      function(app) {                          app.initialize();                      }                 );             }         );     } ); 

i had lot more libraries cut down bit jquery , knockoutjs, you:

  1. declare libraries
  2. require loading them
  3. require loading plugins libraries, here handlers knockoutjs
  4. load app (conveniently named... 'app' here :-). should initialize view models , bind them dom elements. point libraries , plugins have been loaded.

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -