2016-04-14 8 views
0

Ich habe eine Angular-Factory erstellt, die ich dann in einem Controller verwende. Die Fabrik enthält eine delete Methode, die ich versuche, in meinem Controller zu verwenden, jedoch sehe ich einen Fehler, der besagt, dass index nicht definiert ist. Früher, bevor ich eine Fabrik hatte, und als alles in der Steuerung war, funktionierte diese Funktion, aber jetzt ist index nicht länger definiert. Ich habe viele Antworten hier gelesen, kann aber keine Antwort finden.angular.js: 13424 ReferenceError: Index ist nicht definiert, wenn die Factory-Methode im Controller verwendet wird

Mein Code sieht wie folgt aus:

js

app.factory('addressFactory', function(){ 

    var addressFactory = {}; 
    addressFactory.addressBook = []; 

    addressFactory.deleteAddress = function(index) { 
     addressFactory.addressBook.splice(index, 1); 
     localStorage.setItem('addressBook', JSON.stringify(messages.addressBook)); 
    } 

    return addressFactory; 
}) 

.controller('testCtrl', ['$uibModal', 'addressFactory', function ($uibModal, addressFactory) { 

    this.addressBook = addressFactory.addressBook; 
    this.deleteAddress = addressFactory.deleteAddress(index); 
}]); 

html

<div ng-repeat="contact in ctrl.addressBook track by $index"> 
    <p>{{contact.name}}</p> 
    <button ng-click="ctrl.deleteAddress($index)">Delete Contact</button> 
</div> 

Antwort

1

Ändern Sie diese

this.deleteAddress = addressFactory.deleteAddress(index); 

zu diesem:

this.deleteAddress = function(index){ 
    addressFactory.deleteAddress(index); 
}; 
+0

BOOM! Prost dafür! –

+0

@phantom kein Problem, froh, ich könnte helfen – ajmajmajma

+0

Sogar Funktionsvariablenzuweisung würde funktionieren: 'this.deleteAddress = addressFactory.deleteAddress; \t // Notiz nicht this.deleteAddress = addressFactory.deleteAddress (index) ' –

Verwandte Themen