我有一个ExtJs ViewModel,我尝试在其中使用fomulas。以下代码按预期工作:
viewModel: {
formulas: {
isPressed: function (get) {
return get('state.attribute');
}
}
}
调试器在此公式中暂停两次。一次在打开视图时,一次在状态和属性初始化时。
但是,如果我尝试这样做:
viewModel: {
formulas: {
isPressed: function (get) {
var x = 'state.attribute';
return get(x);
}
}
}
仅在打开视图时调试器才会停止,而在初始化所有内容时,调试器将不会第二次停止。
修改
我尝试执行以下操作。在我的组件中,我有这个config
:
config: {
target: null
}
target
在我的父视图中包含一个类似'state.property'
的字符串,其中包含该组件。现在在此组件中,我想绑定到target
的值,但不想写:
formulas: {
isPressed: {
bind: '{state.property'},
get: function(property) { ... }
}
}
因为要绑定的值应该是动态的。我想在不同的地方重用该组件。所以我尝试了一下,但是没用:
viewModel: {
formulas: {
isPressed: function (get) {
return get(this.getView().getTarget());
}
}
}
答案 0 :(得分:1)
发生这种情况的原因是因为它解析了函数的内容以找出依赖关系。但是,它仅使用一个非常幼稚的解析器,因此不会像您描述的那样处理。您可以使用bindTo
明确指定依赖项:
const viewModel = new Ext.app.ViewModel({
formulas: {
isNameModified: {
bind: {
bindTo: '{theUser}',
deep: true
},
get: user => user.foo
}
},
data: {
theUser: {
foo: 1
}
}
});