ExtJS绑定是否忽略注释掉的代码?

时间:2016-07-13 11:14:45

标签: extjs extjs6

如果我的绑定中有一个使用' 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,但我想我会把它扔到那里因为我错过了一些明显的东西。

1 个答案:

答案 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;
  }
}