2016-04-14 14 views
0

Daha sonra bir denetleyicide kullandığım bir Açısal fabrika oluşturdum. Fabrikada, denetleyicimde kullanmaya çalıştığım bir delete yöntemi var, ancak, index'un tanımlanmadığını belirten bir hata görüyorum. Önceden, bir fabrika yapmadan önce ve her şey denetleyicide olduğunda bu işlev işe yaradı, ancak şimdi index artık tanımlanmadı. Burada birçok cevap okudum ama cevap bulamıyorum. aşağıdaki gibi benzeriangular.js: 13424 ReferenceError: denetleyicide fabrika yöntemi kullanılırken dizin tanımlanmadı

Kodum arar:

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> 

cevap

1

Değişim bu

this.deleteAddress = addressFactory.deleteAddress(index); 

bunun için:

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

BOOM! Bunun için alkışlar! –

+0

@phantom sorun değil, ben yardımcı olabilir – ajmajmajma

+0

Hatta işlev değişken ataması işe yarar: 'this.deleteAddress = addressFactory.deleteAddress; \t // not this this.deleteAddress = addressFactory.deleteAddress (index) ' –

İlgili konular