从 get:method 推送到数组

Push to an array from get:method

编辑:谢谢你解决了这个问题。列表()而不是列表。 好傻的问题。

为什么在这样的工厂中推送到数组不起作用? 仅当我在工厂内创建推送功能时它才有效。

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'});
});

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

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

注意括号list()。或者,您也可以将 registeredUsers 公开为服务的 public 属性,在这种情况下是相同的,即

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

然后像这样使用它:

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

尝试 registeredUsersService.list() 而不是 registeredUsersService.list:

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

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