2016-03-27 2 views
0

Richtlinie Vorlage (items.html) genanntReglerfunktion nicht von der Richtlinie Vorlage in AngularJS

<li ng-repeat="item in itemCart"> 
    {{item.title}} <br> 
    {{item.category}} &nbsp 
    {{ formatCurrencyFunction({cost: item.price}) }} 
</li> 

Diese benutzerdefinierten Richtlinie in Second.html verwendet wird

<h1> 
    This is Second. 
    {{header}} 

</h1> 
<hr> 
<ul> 
    <items-list item-cart="items" format-currency-function="formatPrice(cost)"></items-list> 
</ul> 

Der Code für Controller ist:

Die Funktion formatPrice wird nicht von der Direktive Items.html

aufgerufen

Was muss in meinem Code korrigiert werden, damit es funktioniert?

+0

Gibt es einen Grund, dass die FormatPrice-Funktion in der Steuerung vorhanden sein muss? Könnten Sie es stattdessen in die Direktive verschieben? –

+0

Hallo Tah Tatsumoto .. Ich lernte, wie man die Anwendung funktioniert, indem man den Bereich von der Eltern- zur Kind-Richtlinie übergibt. Ja, es würde so funktionieren, wie Sie vorschlagen, die Funktion zu benutzen. Aber ich muss verstehen, warum Ansatz funktioniert nicht. – Navaneeth

Antwort

0

Innerhalb der Link-Funktion der Richtlinie, sollten Sie die Methode, wie so nennen:

scope.someFn({arg: someValue}); 

myApp.directive("itemsList", function(){ 
return{ 
    templateUrl:"contents/Views/Directives/Items.html", 
    replace: true, 
    scope:{ 
     itemCart: "=", 
     formatCurrencyFunction: "&formatCurrencyFunction" 
    }, 
    link:function(scope, element, attrs){ 
     scope.formatPrice({arg: 35}); //scope.someFn({arg: 35}); 
    }, 
    restrict:"EACM" // E-Element A-Attribute C-Class M-Comments   
} 

})

0

erhalten stattdessen mithilfe von ng-Repeats in der Second.html Seite diese Arbeit von die Richtlinie.

Richtlinie Vorlage (items.html)

<li> 
    {{item.title}} <br> 
    {{item.category}} &nbsp 
    {{ formatCurrencyFunction({cost: item.price}) }} 
</li> 

Diese benutzerdefinierten Direktive wird in Second.html verwendet

<h1> 
    This is Second. 
    {{header}} 

</h1> 
<hr> 
<ul> 
    <items-list item="item" format-currency-function="formatPrice(cost)" ng-repeat="item in items"></items-list> 
</ul> 

-Code in JS-Datei

myApp.directive("itemsList", function(){ 
    return{ 
     templateUrl:"contents/Views/Directives/Items.html", 
     replace: true, 
     scope:{ 
      item: "=", 
      formatCurrencyFunction: "&" 
     }, 
     restrict:"EACM" // E-Element A-Attribute C-Class M-Comments   
    } 
}) 
0

Innerhalb der Link-Funktion der Richtlinie , müssen Sie die Methode aufrufen, indem Sie ein bestimmtes Ereignis auf dieses Attribut

anwenden
0

Die Controller-Funktion 'formatCurrencyFunction()' kann nicht aufgerufen werden, indem sie einfach in einen Ausdruck eingefügt wird.

Um die Funktion nutzen müssen Sie es nennen, basierend auf einer ebenen, arbeiten in Ihrem Fall ng-init.

<li ng-repeat="item in itemCart" ng-init="formatCurrencyFunction({cost: item.price})"> 
{{item.title}} <br> 
{{item.category}} 
</li>