javascript - Angular .js :13424 ReferenceError: index is not defined when using factory method in controller

标签 javascript angularjs

我创建了一个 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/

相关文章:

c# - 绑定(bind)javascript函数

php - 如何使用他们的 API 获取 Facebook 上共同好友的列表?

html - 将字符串附加到 ng-model 的开头

javascript - IDEA + Grunt - 如何实时编辑 JavaScript

javascript - 无法使用 protractor.js 从弹出窗口的下拉菜单中单击并选择一个值

javascript - 如果数组中的所有对象都在属性中具有值,则返回 true

javascript - MongoDB Mongoose 更新updatedAt字段

javascript - 从数组对象 Jquery 中删除对象

javascript - 如何在 Jasmine Test 中访问指令的范围

javascript - 正则表达式 JavaScript 需要字符串双引号