我在使用SayHello时收到错误:function(text)

时间:2016-03-16 06:43:44

标签: angularjs

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

app.factory('testFactory',function()
{
    return {
        SayHello: function(text){
        return "Hello " +text;
    }   
}
});

app.service('testService',function(){
{
    return {
        this.SayHello= function(text){
            return "Hello " +text;  
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您正在从您的服务返回一个对象。您需要做的就是在this指针上放置方法和属性。或者,创建一个Factory,您可以在其中返回一个对象并避免使用this。这是服务和工厂之间的唯一区别

// As a service
app.service('testService', function() {
    this.SayHello = function(text) {
        return 'Hello ' + text;
    };
});

// As a factory
app.factory('testFactory', function() {
    return {
        SayHello: function(text) {
            return 'Hello ' + text;
        }
    };
});

您会注意到在服务中我们不需要返回任何内容。那是因为服务是使用new实例化的。另一方面,工厂被实例化为常规函数调用,因此我们必须返回我们希望它们具有的内容。在这种情况下,我们自己的自制对象使用SayHello作为方法。