2015-02-03 5 views
0

Как добавить пользовательский или расширить кендо наблюдаемый массив? JS скрипку: http://jsfiddle.net/balarvs/mctyswh2/3/Добавление пользовательской функции в кендо наблюдаемый массив

$(document).ready(function() { 
/* var ar = [ 
    { id: "10" }, 
    { id: "12" }, 
    { id: "20" } 
]; */ 

if (![].getById) { 
    Array.prototype.getById = function (id) { 
     'use strict'; 
     var arr = Object(this); 
     var found; 
     for (var i = 0; i < arr.length; i++) { 
      var item = arr[i]; 
      if (item.id == id) { 
       found = item; 
      } 
     } 
     return found; 
    }; 
} 
var obser=new kendo.data.ObservableArray([ 
    { id: "10" }, 
    { id: "12" }, 
    { id: "20" } 
]); 
var bb = obser.getById("20"); 
if (bb != undefined) console.log(bb.id); 
}); 

ответ

0

Вы должны не продлить Array но kendo.data.ObservableArray. Ваш код должен быть что-то вроде:

$(document).ready(function() { 
    kendo.data.ObservableArray.prototype.getById = function (id) { 
     'use strict'; 
     var arr = Object(this); 
     var found; 
     for (var i = 0; i < arr.length; i++) { 
      var item = arr[i]; 
      if (item.id == id) { 
       found = item; 
      } 
     } 
     return found; 
    }; 

    var obser=new kendo.data.ObservableArray([ 
     { id: "10" }, 
     { id: "12" }, 
     { id: "20" } 
    ]); 
    var bb = obser.getById("23"); 
    if (bb != undefined) console.log(bb.id); 
}); 

Ваш JSFiddle модифицирована здесь: http://jsfiddle.net/OnaBai/mctyswh2/8/

+0

спасибо. работал отлично. Но я нашел другое решение http://jsfiddle.net/balarvs/sa9Lngcy/2/ –

+0

Вам действительно нужен такой код? Если единственное, что вам нужно, это расширение «ObservableArray», я бы сказал, что это слишком много кода. Личные предпочтения! – OnaBai

Смежные вопросы