EXT JS 5:viewModel链接变量id

时间:2015-01-07 12:46:22

标签: hyperlink extjs5

我正在使用Ext JS 5.0.1,我正在尝试在视图中定义的viewModel中使用链接。

以下示例有效。

Ext.define("MyViewPackage.MyView", {
extend: "Ext.form.Panel",
alias: "widget.myview",
theIdToUse: 47,
    viewModel: {
        links: {
            theProject: {
                type 'mypackage.MyModelClassName'
                id: 17 //This works. But not theIdToUse  or this.theIdToUse.
                       //I would like to use a value provided from my view
            }   
        }
    }
});

我想使用' theIdToUse'对于' theProject'的id属性在'链接中定义。 我试图简单地将 theIdToUse 或this.theIdToUse,但我总是遇到以下错误:

如果没有viewModel

,则无法使用bind config

你知道我怎么能设法使用带有变量id的链接?

提前致谢!

2 个答案:

答案 0 :(得分:0)

this.theIdToUse不起作用,因为在viewModel的范围内, this 不再引用MyViewPackage.MyView,而是引用viewModel本身。

即使您可以获得对MyViewPackage.MyView的引用,比如使用ComponentQuery,该组件在viewModel初始化时仍然不存在,因此您将收到错误无法读取属性&# 39; theIdToUse'未定义的

在视图和viewModel之间使用某种双向绑定可能会更好,但我需要了解更多关于你想要实现的内容的更多信息。

答案 1 :(得分:0)

以前的答案非常正确,但在您的情况下this会引用窗口,而不是viewModel。这是因为在Ext.define中您传递的匿名对象没有一些范围,因此默认情况下将使用window范围。 假设你应该使用这样的东西:

Ext.define("MyViewPackage.MyView", {
extend: "Ext.form.Panel",
alias: "widget.myview",
bind: {theIdToUse: "{id}"}
viewModel: {
    links: {
        theProject: {
            type 'mypackage.MyModelClassName'
            id: 17 //This works. But not theIdToUse  or this.theIdToUse.
                   //I would like to use a value provided from my view
        }   
    }
}
});