2017-02-21 3 views
2
<!DOCTYPE html> 
<html ng-app='myApp'> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

<script> 
    var app = angular.module('myApp', []); 
    app.controller('x', function (ser) { 
     alert(ser.val); 
    }); 
    app.service('ser', function() { 
     var obj = {}; 
     obj.val = 'xyz'; 
     return obj; 
    }) 
</script> 

<body> 

    <h1 ng-controller='x'>My First JavaScript Animation</h1> 

</body> 

</html> 

私はオブジェクト上に作成してオブジェクトのプロパティを与え、それを工場で返すことができますが、サービスはコンストラクタ関数ですが、ここではプログラムで作成して返しますオブジェクト。 このキーワードを使用して行う必要はありません...しかし、それは働いていますか?サービスを工場のように使うにはどうすればいいですか?

+1

コードをインデントしてください。これは許可されています。なぜなら、Javascriptコンストラクタがオブジェクトを返すとき、それはnew'edオブジェクトとして使用されるからです。 –

答えて

3

私は、このリンクと呼ば:そのリンクを1として [https://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make][1]

を始めたときにこれらの名前は、ほぼすべてのAngularJS開発者のために混乱を引き起こします。彼らは(ほとんど)同じことのための構文的な砂糖なので、本当にすべきではありません!あなたがそのサービスを見ることができるソースから

function factory(name, factoryFn) { 
    return provider(name, { $get: factoryFn }); 
} 

function service(name, constructor) { 
    return factory(name, ['$injector', function($injector) { 
     return $injector.instantiate(constructor); 
    }]); 
} 

だけで順番にプロバイダ関数を呼び出すファクトリ関数を呼び出します。ここで はAngularJSソースからその定義されています。

関連する問題