2016-07-13 3 views
1

Wenn ich eine Formel in meiner Bindung habe, die ein 'get' auf etwas verwendet, das nicht existiert, dann berechnet meine Funktion 'myFunction' nicht. Es wird kein Fehler ausgegeben (was schade ist), aber auf meiner Komponente, an die ich diese Formel binde, wird nichts angezeigt.Verbietet die ExtJS-Bindung auskommentierten Code?

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(); 
     }, 

Was wirklich bizarr ist, dass, wenn ich die ‚get‘ Linie auf eine nicht-existente Bindung Kommentar aus, ist es noch nicht

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

funktioniert, wenn ich den Code in der kommentierten ändern Out-Code zu einer Bindung, die existiert, dann funktioniert alles OK!

myFunction: function(get) { 

    var fdn = get('fullDisplayName') ? get('fullDisplayName'): ""; 

    //var code = get('fullDisplayName') ? get('fullDisplayName'): ""; 

    return fdn + code; 
}, 

Warum sollte ExtJS meinen Kommentar gesetzt Code ignorieren?

Ich denke daran, dies als ein Fehler zu Sencha einzureichen, dachte aber, ich würde es einfach da rauswerfen auf SO wenn ich etwas offensichtliches vermisse.

+0

Nun, wenn Sie die nicht vorhandene Bindung auf Kommentar, würde ich immer noch erwarten, dass es nicht zu arbeiten, weil '' code'' jetzt nicht definiert ist .. .. –

Antwort

3

Sie können den Code von parseFormula betrachten, um das Verhalten zu verstehen (analysiert die Zeichenfolge der Formel).

Ich schlage vor, Sie die Bindungen definieren explizit wie:

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

Oh wow, Sencha vergessen, Kommentare in ihrer Funktion Content String Parsing-Funktion zu berücksichtigen. – Alexander

+1

Übrigens frage ich mich, was passiert, wenn Sie die Funktion zum Analysieren von Funktionsinhaltszeichenfolgen in die Funktion zum Analysieren von Funktionsinhaltszeichenfolgen einfügen. – Alexander

Verwandte Themen