【问题标题】:Push to an array from get:method从 get:method 推送到数组
【发布时间】:2015-01-28 05:44:50
【问题描述】:

编辑:感谢您解决了这个问题。列表()而不是列表。 这么愚蠢的问题。

为什么在这样的工厂中推入数组不起作用? 它只有在我在工厂内部进行推送功能时才有效。

var app = angular.module('app', []);

app.factory('registeredUsersService', function() {
    var registeredUsers = [];
    return {
        list: function () {
            return registeredUsers;
        }
    }
});


app.controller('registerController', function ($scope, registeredUsersService) {
    registeredUsersService.list.push({username: 'a', password: 'b'});
});

【问题讨论】:

  • 这样推送时看不到结果,但是将推送方法移到工厂内部时,它可以工作。

标签: arrays angularjs push factory


【解决方案1】:

尝试用registeredUsersService.list() 代替registeredUsersService.list:

app.controller('registerController', function ($scope, registeredUsersService) {
    registeredUsersService.list().push({username: 'a', password: 'b'});
});

顺便说一句,我还没有测试它。 如果不行,请创建一个 plnkr 以便我可以帮助您

【讨论】:

  • 谢谢!有用!我不敢相信我犯了这么愚蠢的错误!
  • 我也经常犯这样的错误:)
【解决方案2】:

因为列表是函数,而不是数组,试试这个:

registeredUsersService.list().push({username: 'a', password: 'b'});

注意括号列表()。或者,您也可以将 registeredUsers 公开为服务的公共属性,在本例中也是如此,即

app.factory('registeredUsersService', function() {
    return {
        registeredUsers = []
    }
});

然后像这样使用它:

app.controller('registerController', function ($scope, registeredUsersService) {
    registeredUsersService.registeredUsers.push({username: 'a', password: 'b'});
});

【讨论】:

    猜你喜欢
    • 2018-08-11
    • 1970-01-01
    • 2019-02-17
    • 2020-05-30
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多