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
{
"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
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
Danke für den Rat. :) –