封装了指令中的链接和控制器
Encapsulated Link and Controller in Directive
我不想在一个单独的、简单的对象中定义一个灵活的angular指令的属性。
角:
contentFactory.directive("listViewDir", function ($compile) {
return {
restrict: "E",
scope: {
datasource: '=',
config: '='
},
controller: function ($scope) {
return $scope.config.controller($scope);
},
link:
return $scope.config.link(scope, element, attrs);
}
}
});
Own Configuration Object:
contentFactory.controller("indexCtrl", function ($scope) {
$scope.config = oLiftTabs;})
var configurations = [{
controller: function ($scope) {
$scope.ButtonClicked = function () {
alert('Button wurde geklickt!');
}
return $scope;
},
link: function (scope, element, attrs){
var template = "... myTemplate ..";
element.html(template);
$compile(element.contents())(scope);
},
}]
虽然我对控制器的解决方案工作得很好,但它不适用于链接。有什么更合适的方法吗?我可以实现在我的封装方法访问服务(如$compile)没有声明它在指令声明?
这就是你想要达到的效果吗?你没有说清楚你希望这个对象驻留在哪里,所以我假设你希望它是父控制器。这感觉不像是一个好主意,但如果不了解更多关于您的用例,很难说。
演示