Ich versuche, eine Tabelle basierend auf einem Array von Objekten zu erstellen, sortierbar durch Klicken auf die Überschriften. Ich habe eine Frage zu dieser Implementierung der Sortierfunktion.Warum funktioniert ng-click nur in dieser Direktive mit einer Funktion, nicht einer Zuweisung?
let myDirectiveTemplate = `
<table class="directiveTable">
<thead>
<th ng-repeat="(key,val) in tableObjectArray[0] track by $index">
<a href="" ng-click="changeCriteria(key)">
{{key}}
</a>
</th>
</thead>
<tbody>
<tr ng-repeat="object in tableObjectArray | orderBy:criteria track by $index">
<td ng-repeat="prop in object track by $index">
{{prop}}
</td>
</tr>
</tbody>
</table>
`
let app2 = angular.module('myDirectiveModule', []);
let myDirective =() => {
return {
restrict: 'E',
scope: {
tableObjectArray: '=objects',
},
controller: myDirectiveController,
template: myDirectiveTemplate,
}
};
let myDirectiveController = ($scope) => {
$scope.changeCriteria = criteria => {
$scope.criteria = criteria;
}
};
app2.directive('myDirective', myDirective);
app2.controller('myDirectiveController', myDirectiveController);
Dies funktioniert. Aber wenn ich in der Vorlage die ng-klicke auf
ändern, scheint es nichts zu tun. Auch wenn die Variable nur mit doppelten geschweiften Klammern angezeigt wird, ändert sie sich nicht beim Klicken. Ich habe die Variablenzuweisung in einem ng-Klick zuvor verwendet; Was ist los?
Egal wie oft ich hörte "Binde dich nicht an ein Primitiv" und "Du brauchst einen Punkt", musste ich es selbst sehen. Vielen Dank! Ich hatte tatsächlich versucht, es zu punktieren, habe es aber NICHT zuerst in meinem Controller deklariert. Oh! –
hilft auch zu wissen, wo Kind Bereiche intern erstellt werden. 'ng-if' und' ng-include' sind zwei andere, die Leute auch fangen – charlietfl
Wenn Sie zu 'ControllerAs' wechseln Methodik Probleme wie diese verschwinden, weil die meisten alles einen Punkt haben dann – charlietfl