我正在使用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的链接?
提前致谢!
答案 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
}
}
}
});