2017-08-08 2 views
1

Ich habe ein sehr seltsames Problem, das ich vorher nicht gesehen habe.Angular Model Name erscheint anstelle von Wert

Ich habe eine einfache ng wiederholen

<ul class="dropdown-menu" data-uib-dropdown-menu role="menu" data-aria-labelledby="customer-type"> 
     <li data-ng-repeat="customer in ctrl.customers"> 
     <a data-ng-click="ctrl.selectCustomerType('{{customer.Name}}', '{{customer.Id}}')">{{customer.Name}}</a> 
     </li> 
    </ul> 

Das Markup in Browser einfach gut macht - wie diese

<ul class="dropdown-menu" data-uib-dropdown-menu="" role="menu" data-aria-labelledby="customer-type"> 

     <!-- ngRepeat: customer in ctrl.customers --> 

     <li data-ng-repeat="customer in ctrl.customers" class="ng-scope"> 
     <a data-ng-click="ctrl.selectCustomerType('Customer1', '1')" class="ng-binding">Customer1</a> 
     </li> 
     <!-- end ngRepeat: customer in ctrl.customers --> 

    <li data-ng-repeat="customer in ctrl.customers" class="ng-scope"> 
    <a data-ng-click="ctrl.selectCustomerType('Customer2', '2')" class="ng-binding">Customer2</a> 
    </li> 
    <!-- end ngRepeat: customer in ctrl.customers --> 

    <li data-ng-repeat="customer in ctrl.customers" class="ng-scope"> 
    <a data-ng-click="ctrl.selectCustomerType('Customer3', '3')" class="ng-binding">Customer3</a> 
    </li> 
    <!-- end ngRepeat: customer in ctrl.customers --> 

</ul> 

Das Problem danach beginnt. Wenn ich das Dropdown auswähle und etwas wähle, ruft es die Funktion selectCustomerType auf. Jetzt, wenn ich diese Methode debuggen, anstatt Werte wie customer1, 1 oder customer2, 2 zu senden, sendet es Wert als '{{customer.Name}}' und '{{customer.Id}}' was ist:

function selectCustomerType(name, id) { 
console.log(name); // - this prints {{customer.Name}} instead of actual value 
console.log (id);// - this prints {{customer.Id}} instead of actual value 
//do something 
}} 

Ich habe dies an so vielen Orten verwendet, ich bin nicht in der Lage, zu verstehen, warum .. Any Zeiger?

Antwort

2

ng-click erwartet einen Ausdruck. Sie brauchen die doppelten geschweiften Klammern nicht.

Ändern Sie diese

<a data-ng-click="ctrl.selectCustomerType('{{customer.Name}}', '{{customer.Id}}')">{{customer.Name}}</a> 

sein

<a data-ng-click="ctrl.selectCustomerType(customer.Name, customer.Id)">{{customer.Name}}</a> 
+0

Wow .. danke .. seine lustig .. ich dies tatsächlich versucht, und der Browser gerendert als ~ Daten-ng-click =“ ctrl.selectCustomerType (customer.Name, customer.Id) "~ für alle Li's. Also dachte ich, es muss ein falsches Markup sein –

Verwandte Themen