angular.js:13424 ReferenceError:在控制器中使用工厂方法时未定义索引

angular.js:13424 ReferenceError: index is not defined when using factory method in controller

本文关键字:工厂 方法 未定义 索引 13424 js ReferenceError 控制器 angular      更新时间:2023-09-26

我创建了一个Angular工厂,然后在控制器中使用它。工厂包含一个delete方法,我正试图在我的控制器中使用它,但是,我看到一个错误,说index没有定义。以前,在我有工厂之前,当所有东西都在控制器中时,这个功能可以工作,但现在不再定义index。我在这里读了很多答案,但找不到答案。

我的代码如下:

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>

更改此

this.deleteAddress = addressFactory.deleteAddress(index);

到此:

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