ExtJs ViewModel:传递变量而不是字符串
我有一个ExtJs视图模型,我尝试使用公式。以下代码按预期工作:ExtJs ViewModel:传递变量而不是字符串,extjs,extjs6-modern,Extjs,Extjs6 Modern,我有一个ExtJs视图模型,我尝试使用公式。以下代码按预期工作: viewModel: { formulas: { isPressed: function (get) { return get('state.attribute'); } } } 调试器在此公式中暂停两次。打开视图时一次,初始化状态和属性时一次 但如果我尝试这样做: viewModel: { formulas: { isPressed
viewModel: {
formulas: {
isPressed: function (get) {
return get('state.attribute');
}
}
}
调试器在此公式中暂停两次。打开视图时一次,初始化状态和属性时一次
但如果我尝试这样做:
viewModel: {
formulas: {
isPressed: function (get) {
var x = 'state.attribute';
return get(x);
}
}
}
调试器仅在打开视图时停止,而不是在第二次初始化所有内容时停止
编辑
我试图做到以下几点。在我的组件中,我有以下配置:
目标包含来自包含组件的父视图的类似“state.property”的字符串。现在在这个组件中,我希望绑定到target的值,但不想写入:
formulas: {
isPressed: {
bind: '{state.property'},
get: function(property) { ... }
}
}
因为要绑定到的值应该是动态的。我想在不同的地方重用组件。所以我尝试了这个,但没有成功:
viewModel: {
formulas: {
isPressed: function (get) {
return get(this.getView().getTarget());
}
}
}
发生这种情况的原因是,它解析函数的内容以找出依赖项。然而,它只使用了一个真正幼稚的解析器,所以像您描述的那样的东西不会被接受。您可以使用bindTo显式指定依赖项:
谢谢你的回答。我已经更新了我的问题以澄清我的问题。由于完全相同的原因,它没有得到处理。解析器希望得到'some.vm.prop';。因为您包含了一个变量,所以它无法解析它。
viewModel: {
formulas: {
isPressed: function (get) {
return get(this.getView().getTarget());
}
}
}
const viewModel = new Ext.app.ViewModel({
formulas: {
isNameModified: {
bind: {
bindTo: '{theUser}',
deep: true
},
get: user => user.foo
}
},
data: {
theUser: {
foo: 1
}
}
});