【发布时间】:2015-11-20 03:29:01
【问题描述】:
我正在处理这个blog。
作者提出,
当您使用 Factory 时,您会创建一个 对象,为其添加属性,然后 返回相同的对象。当您将此服务传递到您的控制器时,对象上的那些属性现在将通过您的工厂在该控制器中可用。
所以,据我了解,这一行
被替换为
作为服务,对象被返回 当我们调用 myFactory()。
到目前为止没有问题,
现在考虑 sn-p,
<script type="text/javascript">
var module = angular.module('MyApp', []);
module.factory('VaderService', function() {
var VaderClass = function(padawan) {
this.name = padawan;
this.speak = function () {
return 'Join the dark side ' + this.name;
}
}
return VaderClass;
});
module.controller('StarWarsController', function($scope, VaderService) {
var luke = new VaderService('luke');
$scope.luke = luke.speak();
});
</script>
</head>
<body ng-app="MyApp">
<table ng-controller="StarWarsController">
<tbody>
<tr><td>{{luke}}</td></tr>
</tbody>
</table>
</body>
打印为,
Join the dark side luke
我不明白这里发生了什么,这行
var luke = new VaderService('luke');
我们创建了工厂 VaderService('luke') 的 instance 传递字符串 luke作为参数,但令人惊讶的是,在
module.factory('VaderService', function() {...
其次,返回一个函数,即VaderClass(),而不是一个对象。 (我很清楚 javascript 中的函数是一流的对象)。
字符串luke如何传递给VaderClass函数中的参数?
【问题讨论】:
-
但是您返回这个
var VaderClass = function(padawan),这就是正在应用的内容。那里的外部功能仅用作外壳。
标签: javascript angularjs singleton factory