добавление пользовательской функции в наблюдаемый массив кендо

Как добавить собственный или расширить наблюдаемый массив кендо? Скрипт 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);
});

person Balamurugan.Santhanaraj    schedule 03.02.2015    source источник


Ответы (1)


Вы должны не расширять 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/

person OnaBai    schedule 03.02.2015
comment
благодарю вас. работал нормально. Но я нашел другое решение jsfiddle.net/balarvs/sa9Lngcy/2. - person Balamurugan.Santhanaraj; 03.02.2015
comment
Вам действительно нужно так много кода для этого? Если единственное, что вам нужно, это расширить ObservableArray, я бы сказал, что это слишком много кода. Личные предпочтения! - person OnaBai; 04.02.2015