Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能访问对象的属性吗?_Javascript_Kendo Ui - Fatal编程技术网

Javascript 为什么可以';我不能访问对象的属性吗?

Javascript 为什么可以';我不能访问对象的属性吗?,javascript,kendo-ui,Javascript,Kendo Ui,我试图从“accountsCardModel”对象访问属性“providerAccountId”,但由于某些原因,该属性未定义。我使用的是剑道可观测对象,get方法通常有效。我甚至尝试使用点符号访问存储在对象中的属性(没有运气) 在下一行,控制台抛出错误“无法读取未定义的属性'get'” 我不知道剑道内部是如何运作的。也许,剑道试图在我希望它执行之前执行代码,但这不太可能。也许这是一个提升问题。 var accountsCardModel=kendo.observable({ ProviderA

我试图从“accountsCardModel”对象访问属性“providerAccountId”,但由于某些原因,该属性未定义。我使用的是剑道可观测对象,get方法通常有效。我甚至尝试使用点符号访问存储在对象中的属性(没有运气)

在下一行,控制台抛出错误“无法读取未定义的属性'get'”

我不知道剑道内部是如何运作的。也许,剑道试图在我希望它执行之前执行代码,但这不太可能。也许这是一个提升问题。
var accountsCardModel=kendo.observable({
ProviderAccounted:“”,
数据源:新建kendo.data.datasource({
运输:{
阅读:{
url:MobileStorage.getServerURL()+“/cabinet/wicket/bookmarkable/com.web.services.AccountsService”,
数据类型:“json”,
类型:“POST”,
数据:{
作品:“读”,
provAccId:accountsCardModel.get(“providerAccountId”)
},
发送前:函数(jqXHR){
Utils.xhr.queue(jqXHR);
},
完成:函数(jqXHR){
Utils.xhr.dequeue(jqXHR);
}
}
},
模式:{
解析:函数(响应){
控制台日志(响应);
}
}
}),
showAccountDetails:函数(providerAccountId){
此设置(“providerAccountId”,providerAccountId);
}

});我找到了一个解决方案:

跟踪了调用堆栈,看到剑道在我不知情的情况下在幕后执行我的命令,真是令人沮丧。我没有发送read:parameters,而是将其作为一个函数调用,它工作了

之前:

    datasource: new kendo.data.DataSource({
    transport: {
        read: {
            url: MobileStorage.getServerURL() + "/cabinet/wicket/bookmarkable/com.web.services.AccountsService",
            dataType: "json",
            type: "POST",
            data: {
                op: "read",
                provAccId: accountsCardModel.get("providerAccountId")
            },
            beforeSend: function(jqXHR){
                Utils.xhr.queue(jqXHR);
            },
            complete: function(jqXHR) {
                Utils.xhr.dequeue(jqXHR);
            }
        }
    },
    schema: {
        parse: function(response) {
            console.log(response);
        }
    }
}),
Afer:

    datasource: new kendo.data.DataSource({
    transport: {
        read: function(options) {
            $.ajax({
                url: MobileStorage.getServerURL() + "/cabinet/wicket/bookmarkable/com.web.services.AccountsService",
                dataType: "json",
                type: "POST",
                data: {
                    op: "read",
                    provAccId: accountsCardModel.providerAccountId
                },
                success: function(result) {
                  options.success(result);
                },
                error: function(result) {
                  options.error(result);
                },
                beforeSend: function(jqXHR){
                    Utils.xhr.queue(jqXHR);
                },
                complete: function(jqXHR) {
                    Utils.xhr.dequeue(jqXHR);
                }
            });
        }
    },
    schema: {
        parse: function(response) {
            console.log(response);
            //return response.providerAccounts[0]; // Load only online account, omit autologin
        }
    }
})

成功了

试试这个
provAccId:this.get(“providerAccountId”)
担心“this”关键字的范围会改变,但我试过了,没有用。
    datasource: new kendo.data.DataSource({
    transport: {
        read: function(options) {
            $.ajax({
                url: MobileStorage.getServerURL() + "/cabinet/wicket/bookmarkable/com.web.services.AccountsService",
                dataType: "json",
                type: "POST",
                data: {
                    op: "read",
                    provAccId: accountsCardModel.providerAccountId
                },
                success: function(result) {
                  options.success(result);
                },
                error: function(result) {
                  options.error(result);
                },
                beforeSend: function(jqXHR){
                    Utils.xhr.queue(jqXHR);
                },
                complete: function(jqXHR) {
                    Utils.xhr.dequeue(jqXHR);
                }
            });
        }
    },
    schema: {
        parse: function(response) {
            console.log(response);
            //return response.providerAccounts[0]; // Load only online account, omit autologin
        }
    }
})