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

ExtJS绑定是否忽略注释掉的代码?,extjs,extjs6,Extjs,Extjs6,如果我的绑定中有一个公式在不存在的东西上使用“get”,那么我的函数“myFunction”就不会计算。没有抛出任何错误(这很遗憾),但至少在绑定此公式的组件上没有显示任何内容 Ext.define('MyModel', { extend: 'Ext.app.ViewModel', formulas: { myFunction: function(get) { var fdn = get('fullDisplayName') ? g

如果我的绑定中有一个公式在不存在的东西上使用“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会忽略我注释掉的代码


我想把它作为一个bug提交给Sencha,但我想我会把它扔出去,以防我遗漏了一些明显的东西。

您可以查看的代码来理解该行为(它解析公式的字符串)

我建议您明确定义绑定,如下所示:

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

哦,哇,Sencha忘了在他们的函数内容字符串解析函数中说明注释。顺便说一句,这让我想知道当你将他们的函数内容字符串解析函数放入他们的函数内容字符串解析函数时会发生什么。好吧,当你注释掉不存在的绑定时,我仍然希望它不起作用,因为
code
现在还没有定义。。。。