所以,我的印象是Angularjs可能有点冗长,我想清楚地了解以下功能与何时使用它们之间的主要区别。我觉得'我理解,但线条有点含糊不清ethereal所以我希望其他人澄清。
之间的用法有何不同:它们在职责和使用方面似乎可以互换。
一个。服务
B中。工厂
℃。提供商
module.controller与module.directive.controller有什么区别? 即:
var app = angular.module("someApp",[]);
app.controller("someCtrl1", function(){
// some code
});
这个用法,当它位于指令
中时app.directive("someDirective", function() {
return {
restrict: 'E',
template: '<p>Hello {{name}}!</p>',
controller: function($scope, $element){
$scope.name = $scope.name + "post1 ";
},
link: function(scope, el, attr) {
scope.name = scope.name + "post2 ";
}
}
})
我对&#34;控制器&#34;有点朦胧在指令的返回内部。这个约定是什么,更详细?
答案 0 :(得分:1)
简而言之,Service是工厂的包装器,而工厂是提供者的包装器。 该服务使用JS构造函数语法,而工厂使用JS函数语法。 但是,服务/工厂和提供商之间存在一个很大的区别,即配置阶段可以访问提供商,而前者则不可访问。 请参阅此详细信息answer。
指令中控制器的主要用途是当您的指令具有隔离范围时,它不会耦合到父控制器,因此它具有独立的控制器。
< / LI> 醇>答案 1 :(得分:1)
1
您可以在this question
上找到明确的答案另外我可以说:
服务结构简单
工厂结构复杂
提供商的结构更复杂
我没有听说过使用module.directive.controller,正确的用法是;
app.directive("myDir", ['$yourService',function($yourService){
return {
controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
var that = this;
//add sume property
that = angular.extend(that, $yourService));
return that;
}]
}
}])
基本上,您不需要每个指令的控制器属性。但是,如果您的指令是终端指令或父指令,并且您的子指令需要父指令的某些函数或属性,则需要在指令中使用自定义控制器。
例如,如果你有一个具有子行和单元指令的table指令,那么table必须有一个控制器。