将数组从服务传递到控制器

时间:2015-09-05 16:44:53

标签: javascript angularjs model-view-controller service

我似乎无法弄清楚如何将数组从服务传递到控制器。

我有一个简单的服务

.service('test', function() {
    var array = []

    return array;
})

按下按钮时调用此功能的控制器

$scope.testArray = function() {
    $scope.test = test.array;

    console.log("test: ", $scope.test);
};

我得到错误测试未定义。任何人都可以向我解释为什么这不起作用以及如何解决它?我尝试将该数组存储在一个单独的对象中,但也没有运气。感谢

3 个答案:

答案 0 :(得分:2)

(另见:this SO question about Angular providers

service应将属性直接放在this上。而不是

.service('test', function() {
    var array = [];

    return array; 
})

.service('test', function() {
    this.array = [];
})

(尽管代码风格;许多人建议更喜欢直接对象访问的功能访问)

.service('test', function() {
    var array = [];
    this.getArray = function(){
        return array;
    };
})

答案 1 :(得分:1)

只需使用test.array更改test

JSFiddle

.controller('youCtrl', ['$scope', 'test', function ($scope, test) {
    $scope.testArray = function() {
       $scope.test = test;

       console.log("test: ", $scope.test);
    };
});

答案 2 :(得分:0)

C:\xampp\sendmail.ini : smtp_server=localhost smtp_port=465 smtp_ssl=tls error_logfile=error.log auth_username=munish259272@gmail.com auth_password=XXXXXXXXXXXXXXX force_sender=munish259272@gmail.com c:\xampp\php.ini [mail function] SMTP = localhost smtp_port = 25 sendmail_from = postmaster@localhost ;sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 变量添加到array

service

angular.module('moduleName').service('test', function() { this.array = []; }); 注入service

controller