angularjs工厂结构有几种方法

时间:2013-07-31 07:20:12

标签: javascript angularjs factory

好吧,这实际上不是我在项目中使用的数据,但我稍微简化了一下。

但我在我的angularjs app中有这个工厂:

myApp.factory('inputinfo', function () {


var self = {


    test: function (in) {
        return "hello " + in;
    }
    test2: function (in) {
        return "hello " + in;
    }


};

return { test: self.test, test2: self.test2 };

 });

运作正常,但我想要的是“结合”它们。我的意思是现在即时解析in参数以及test1和test2,我希望他们从同一个函数中使用它...所以我试过这样的事情:

var self = {


    nfo: function (in) {

        var selfObj = { test1: test1(), test2: test2() };

        function test1() {
            return "hello " + in;
        }

        function test2() {
            return "hello " + in + " ok";
        }


        return { self: self.selfObj }


    }


};

return { nfo: self.nfo };

但这只是返回undefined。

所以试着解释一下我想做什么:

说我打电话给inputinfo工厂,我应该能够调用并使用它:

var some = inputinfo.nfo("something");

然后我希望能够做到:

 alert(some.test1);

所以当我打电话给我时,我可以继续获取所有值(test1,test2等)。

我无法理解我是如何写这个以获得我想要的结果的。对不起,如果我没解释那么好:-S

编辑:

也许以更简单的方式解释它:

说我有这个:

function atest(in)
{

    var values = {
        one: function() {
           return "hello " + in;     
        }
        two: function() {
           return "hello " + in " ok";
        }
    }

    return { values: values };

}

我可以这样做:

 var result = atest("something");
 alert(result.values.one());

那么如何在一个机构中构建它以获得相同的结果? (并且能够以同样的方式调用它吗?)

1 个答案:

答案 0 :(得分:0)

确实做了类似这样的事情:

myApp.factory('inputinfo', function () {

    return function (in) {
     var self = {


        test: function () {
            return "hello " + in;
        },
        test2: function () {
            return "hello " + in;
        }


      };

      return self;

    }

}

然后我可以这样称呼它:

var test = inputinfo("dude");
alert(test.test());

这会给我结果:你好老兄