Ich habe Schwierigkeiten, ein Objekt zu einer Direktive zu übergeben und dann innerhalb eines NG-Klick-Attributs zu verwenden. Die HTML und Direktive ist unten. Wie schon geschrieben, wird das ng-Klasse Attribut „richtig“ als ng-class="{ 'my-class': selectedItem === {"FirstName":"John","LastName":"Snow"} }"
Übergeben Sie Objekt an ng-klick innerhalb der Direktive
jedoch gemacht, wird die ng-Click-Richtlinie fälschlicherweise als ng-click="selectedItem = value"
gemacht
ich nicht {{value}}
in dem ng-Click-Direktive benutzen oder es wirft ein Fehler unter Angabe Token '{' invalid key at column 17 of the expression [selectedItem = {{value}}] starting at [{value}}]."
Ich habe versucht, dies um und verwenden Sie eine Verknüpfung anstelle einer Vorlage und mit scope.value. Dies würde [object Object]
zurückgeben, da ich an diesem Punkt Verkettungen verkette.
Die HTML:
<table ng-table="tableParams">
<tr ng-repeat="item in $data">
<td>
<check-box ng-model="selectedItem" behavior="radio" value="item"></check-box>
</td>
</tr>
</table>
Die Richtlinie:
angular.module('check-box.directive', [])
.directive('checkBox', checkBoxDirective);
function checkBoxDirective() {
return {
scope: {
value: '='
},
restrict: 'E',
replace: true,
template: template
};
function template(element, attributes) {
var baseHtml = '<button type="button" ';
var ngClass = 'ng-class="{ \'my-class\': ' + attributes.ngModel + ' === {{value}} }"';
var ngClick = 'ng-click="' + attributes.ngModel + ' = value"';
return baseHtml + ngClass + ngClick + '></button>';
}
}
Was genau wollen Sie Ihre Schaltfläche haben ng Klick tun? Vielleicht können wir andere Möglichkeiten vorschlagen ... – wdanda
verlieren die geschweiften Klammern um Wert in der Template-Funktion '{{Wert}}' sollte sein {{Wert}} –
@wdanda Es soll nur das Objekt in der zur Verfügung gestellt value-Attribut für das im ng-model-Attribut angegebene Objekt – Lefka