我對AngularJS有一些經驗,並且已經在網上看到了這個指令,但它不像我以前見過的任何東西,我無法理解它在做什麼?誰能幫忙?AngularJS:這個指令是幹什麼的?
具體問題:由於很少理解,指令的簽名必須執行依賴注入。但是我掙扎的是:如果在數組中傳入$ injector,爲什麼它也作爲函數中的參數發送,例如function($ injector);換句話說,爲什麼有兩個$注射器?如果我不在數組中發送$注入器,什麼都行不通?
此外,該指令是如何嵌入控制器的?你什麼時候定義這樣的控制器?
另外我通常在下面的代碼中看到帶有$前綴的作用域如何在沒有$的情況下工作?
任何鏈接閱讀更多或在這裏解釋它將是有用的。
.directive('mycomp', [
'$injector', function($injector) {
var $builder, $compile, $drag;
$builder = $injector.get('$builder');
$drag = $injector.get('$drag');
$compile = $injector.get('$compile');
return {
restrict: 'A',
scope: {
component: '=mycomp'
},
controller: 'mycompController',
link: function(scope, element) {
scope.copyObjectToScope(scope.component);
$drag.draggable($(element), {
mode: 'mirror',
defer: false,
object: {
componentName: scope.component.name
}
});
return scope.$watch('component.template', function(template) {
var view;
if (!template) {
return;
}
view = $compile(template)(scope);
return $(element).html(view);
});
}
};
}
])
非常很好的解釋,謝謝,你能提出一個關於嵌入控制器的指令中更復雜的東西的一個好鏈接(支持你最後一段的解釋,而不是它不回答,但擴展我對這些知識的瞭解)? – joatmom9
也許在這裏:http://www.bennadel.com/blog/2446-using-controllers-in-directives-in-angularjs.htm這不是很常見和有據可查的事情:[ – domakas