Angularjs可以在工厂返回对象包含另一个对象还是只是函数?

时间:2015-11-25 09:20:43

标签: javascript angularjs

我的工厂包含一些功能和对象。 例如:

angular.module('app').factory('factory', function(){

    var that = this;

    that.a = function() {that.data = {'id': 100}}

    that.b = function(){ ** some code ***}

    return { a:that.a, b:that.b, data:that.data };

});

但是,当我从工厂外部('factory.a')访问函数'a'时,创建数据对象:

that.data = {'id': 100}

然后从外部('factory.data')访问'data' - 数据未定义。

我必须在工厂的返回对象中返回函数吗?

1 个答案:

答案 0 :(得分:0)

在您至少致电that.data一次之前,

that.a()未定义。要解决此问题,请在that.data之外创建that.a或致电that.a

angular.module('app').factory('factory', function(){

    var that = this;
    that.a = function() {that.data = {'id': 100}}

    that.b = function(){ ** some code ***}

    that.getData = function() { return that.data; }

    return { a:that.a, b:that.b, getData:that.getData };

});

致电factory.a(); console.log(factory.getData());,您就会获得正确的价值。

<强> 编辑:
使用getter getData()

添加了工作Fiddle