在試圖掌握創建我自己的AngularJS指令時,我有一個例子,可以做我需要的一切,但是要意識到在借用各種例子時,我現在可以在控制器中爲指令的視圖創建功能,作爲以及鏈接。在自定義指令中,`controller`對`link`有什麼功能?
看來,我能得到所有一起擺脫控制器的,只是把一切都變成鏈接,或者是有什麼,我可以說我不能做鏈接控制器嗎?
http://jsfiddle.net/edwardtanguay/gxr49h96/6
.directive('itemMenu', function() {
var controller = function ($scope) {
var vm = this;
vm.addItem = function() {
$scope.add();
vm.items.push({
'kind': 'undefined',
'firstName': 'Joe',
'lastName': 'Newton',
'age': Math.floor(Math.random() * 60) + 20
});
};
// DOES THE SAME AS THE FUNCTION DEFINED BELOW IN LINK
// $scope.convertToInternal = function(item) {
// item.internalcode = 'X0000';
// item.kind = 'internal';
// };
};
return {
restrict: 'A',
scope: {
item: '=',
add: '&'
},
controller: controller,
controllerAs: 'vm',
bindToController: true,
template: '<div ng-include="getTemplateUrl()"></div>',
link: function (scope, element, attrs) {
scope.getTemplateUrl = function() {
switch (scope.item.kind) {
case 'external':
return 'itemMenuTemplateExternal';
case 'internal':
return 'itemMenuTemplateInternal';
default:
return 'itemMenuTemplateUndefined';
}
};
scope.convertToInternal = function(item) {
item.internalcode = 'X0000';
item.kind = 'internal';
};
},
};
})
我找到了一個很好的解釋這個在這裏 - http://stackoverflow.com/questions/15676614/directive-link-vs-compile-vs-controller – svikasg