Kendo ui 将自定义函数添加到剑道可观测数组中

Kendo ui 将自定义函数添加到剑道可观测数组中,kendo-ui,kendo-observable,Kendo Ui,Kendo Observable,如何添加自定义或扩展剑道可观测阵列? JS小提琴: $(文档).ready(函数(){ /*var-ar=[ {id:“10”}, {id:“12”}, {id:“20”} ]; */ 如果(![].getById){ Array.prototype.getById=函数(id){ "严格使用",; var arr=对象(此); var发现; 对于(变量i=0;i

如何添加自定义或扩展剑道可观测阵列? JS小提琴:

$(文档).ready(函数(){
/*var-ar=[
{id:“10”},
{id:“12”},
{id:“20”}
]; */
如果(![].getById){
Array.prototype.getById=函数(id){
"严格使用",;
var arr=对象(此);
var发现;
对于(变量i=0;i
您不应该扩展
数组,而应该扩展
剑道.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);
});
$(文档).ready(函数(){
kendo.data.observearray.prototype.getById=函数(id){
"严格使用",;
var arr=对象(此);
var发现;
对于(变量i=0;i

您的JSFIDLE已在此处修改:

谢谢。很好。但是我找到了另一个解决方案你真的需要那么多代码吗?如果您只需要扩展
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);
});