我创建了一个 Angular 工厂,然后在 Controller 中使用它。该工厂包含一个我试图在 Controller 中使用的 delete
方法,但是,我看到一个错误,指出 index
未定义。以前,在我拥有工厂之前,当所有内容都在 Controller 中时,此函数可以工作,但现在不再定义 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);
};
关于javascript - Angular .js :13424 ReferenceError: index is not defined when using factory method in controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632483/