如果我的绑定中有一个使用' get'在一些不存在的东西上,然后是我的功能' myFunction'不计算。不会抛出任何错误(这是一种耻辱),但至少我的组件上没有显示任何内容,我将此公式绑定到。
Ext.define('MyModel', {
extend: 'Ext.app.ViewModel',
formulas: {
myFunction: function(get) {
var fdn = get('fullDisplayName') ? get('fullDisplayName'): "";
var code = get('this.is.something.that.does.not.exist') ? get('this.is.something.that.does.not.exist'): "";
return fdn + code;
},
fullDisplayName: function(get) {
var title = get('ref_mainApplicantTitle.selection.text') ? get('ref_mainApplicantTitle.selection.text') : "";
var fName = get('tsk_forCase_mainApplicant_fname0') ? get('tsk_forCase_mainApplicant_fname0') : "";
var lName = get('tsk_forCase_mainApplicant_lname0') ? get('tsk_forCase_mainApplicant_lname0') : "";
return ("" + title + " " + fName + " " + lName + "").trim();
},
真正奇怪的是,如果我发表评论' get'线路到一个不存在的绑定,它仍然不起作用
myFunction: function(get) {
var fdn = get('fullDisplayName') ? get('fullDisplayName'): "";
//var code = get('this.is.something.that.does.not.exist') ? get('this.is.something.that.does.not.exist'): "";
return fdn + code;
},
如果我将注释掉的代码中的代码更改为存在的绑定,那么一切正常!
myFunction: function(get) {
var fdn = get('fullDisplayName') ? get('fullDisplayName'): "";
//var code = get('fullDisplayName') ? get('fullDisplayName'): "";
return fdn + code;
},
为什么ExtJS会忽略我注释掉的代码?
我正在考虑将此作为一个错误提交给Sencha,但我想我会把它扔到那里因为我错过了一些明显的东西。
答案 0 :(得分:3)
您可以查看parseFormula
的代码以了解行为(它解析公式的字符串)。
我建议您明确定义绑定:
myFunction: {
bind: {
fullDisplayName: '{fullDisplayName}',
//foo: '{this.is.something.that.does.not.exist}'
},
get: function(data) {
var fdn = data.fullDisplayName ? data.fullDisplayName : "";
//var code = data.foo ? data.foo : "";
return fdn + code;
}
}