2016-05-25 13 views
0

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

Was genau wollen Sie Ihre Schaltfläche haben ng Klick tun? Vielleicht können wir andere Möglichkeiten vorschlagen ... – wdanda

+0

verlieren die geschweiften Klammern um Wert in der Template-Funktion '{{Wert}}' sollte sein {{Wert}} –

+0

@wdanda Es soll nur das Objekt in der zur Verfügung gestellt value-Attribut für das im ng-model-Attribut angegebene Objekt – Lefka

Antwort

0

Schauen Sie sich diese Lösung:

var ngClick = `ng-click= "${attributes.ngModel} = ${value}"`; 
Verwandte Themen