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

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

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/

Другие вопросы по тегам