2017-01-12 1 views
0

Ich habe ein Problem mit meiner App. Wenn ich es mit grunt serve baue, funktioniert alles gut, aber wenn ich versuche, es zu dist aufzubauen, scheint es, dass die Bindung meiner Komponente irgendwie scheitert. Der Code sieht etwa so aus:AngularJS Component Bindung ist nicht definiert auf minimierte

angular.module('jsonParserApp') 
.component('leafTemplate', { 
    templateUrl: 'views/itemList.html', 
    bindings: { 
    readonly: '<', 
    //other bindings (works properly) 
    }, 
    controller: ['$scope', 'copiedValue', function($scope, copiedValue) { 
    //code 
    this.$onChanges = function(changesObj) { 
     console.log('onChanges', changesObj); 
    //code 
    }; 
    //code 
    }] 
}); 

Und dann, wenn ich was zu überprüfen ist Wert von ctrl.readonly in console.log es

{ 
    "readonly": { 
    "currentValue": true, 
    "previousValue": UNINITIALIZED_VALUE 
    } 
} 

jedoch zurück, wenn ich bei protokolliertem Wert auf grunt ‚s dist sehe es gibt

zurück
{ 
    "readonly": { 
    "currentValue": undefined, 
    "previousValue": UNINITIALIZED_VALUE 
    } 
} 

Was ist wichtig zu erwähnen ist, dass diese Komponenten sind rekursiv aufgebaut. Dieser Code in html sieht mehr oder weniger wie folgt aus: (erste Probe des Codes Wert initialisieren nur lesbar zu wahr oder falsch, und dann sollte es auf das Kind Elemente vermehrt werden)

<ul ng-show="main.toggleInputTree" class="overflow-auto" flex> 
    <li ng-repeat="(key, value) in main.inputJson"> 
    <leaf-template k="key" t="main.inputJson" i="{{$index}}" readonly="true" parent="$"></leaf-template> 
    </li> 
</ul> 

(zweite Probe von Code, der sein sollte, Eltern vermehrt aus, es ist - auf grunt serve seine Arbeits, auf grunt ‚s dist - nicht)

<ul ng-show="ctrl.displayChildren" ng-if="!ctrl.isString(ctrl.t, ctrl.k)"> 
    <li ng-repeat="(key, value) in ctrl.t[ctrl.k]"> 
    <leaf-template k="key" t="ctrl.t[ctrl.k]" i="{{$index}}" readonly="ctrl.readonly" parent="{{ctrl.parent + '.' + ctrl.k}}"></leaf-template> 
    </li> 
</ul> 

Was ist das Problem, warum der Wert nicht auf minimierte/uglified Version propagiert wird?

@UPDATE

Ich habe versucht, es zu debuggen, und ich fand etwas sehr interessant aus. Vor dem Bau, html wie folgt aussieht:

<leaf-template k="key" t="ctrl.t[ctrl.k]" i="{{$index}}" readonly="ctrl.readonly" parent="{{ctrl.parent + '.' + ctrl.k}}"></leaf-template> 

und innerhalb dist Version, $ templateCache html halten, die wie dies für einige Gründe

<leaf-template k="key" t="main.inputJson" i="{{$index}}" readonly parent="$"></leaf-template> 

sieht, wird readonly="ctrl.readonly" geschnitten readonly

+0

Wenn Sie das Problem gelöst haben, ist es am besten, Ihre Frage zu beantworten. Auf diese Weise wissen andere, dass das Problem gelöst ist. Sie können sich auch selbst Punkte geben, indem Sie die Antwort akzeptieren. :-) – georgeawg

+0

Danke für den Rat. :) –

Antwort

0

Namen ändern von readonly zu allem anderen geholfen ... Eigentlich ist readonly HTML-Eingabe-Attribut, so uglify geparst readonly="ctrl.readonly" zu nur readonly.

Verwandte Themen