2016-04-14 8 views
0

私はコントローラで使用しているAngularファクトリを作成しました。工場には私のコントローラーで使用しようとしているdeleteメソッドが含まれていますが、が定義されていないというエラーが表示されています。以前は、工場を稼働させる前に、すべてがコントローラに入っていたときにこの機能が働いていましたが、現在indexは定義されていません。私はここで多くの答えを読んだが、答えは見つけられない。angular.js:13424 ReferenceError:コントローラでファクトリメソッドを使用しているときにインデックスが定義されていません

次のように私のコードは次のようになります。

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> 

答えて

1

変更この

this.deleteAddress = addressFactory.deleteAddress(index); 

to this:

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

BOOM!それに乾杯! –

+0

@phantom問題はありません。私は助けてくれるとうれしいです – ajmajmajma

+0

偶数変数の代入はうまくいくでしょう: 'this.deleteAddress = addressFactory.deleteAddress; \t //注記しないthis.deleteAddress = addressFactory.deleteAddress(index) ' –

関連する問題