我希望开发人员在使用特定指令时能够使用他选择的控制器。如何实现这一点在此解释:https://stackoverflow.com/a/23647720/1279730
但是,我还想要一个"默认"行为,如果没有设置控制器。在"概念"这可能看起来像:
angular.module('myApp',[]).
directive('addIcons', function(){
return {
restrict : 'A',
scope:{},
controller : function ($scope, $element, $attr) {
// A default implementation
var default = function () { $scope.name = "baz"; }
// return the controller which handles this "request"
return $attr.controllerName ? $attr.controllerName : default;
},
template:'<input type="button" value="(+) plus" ng-click="add()">'
}
})
我感谢任何帮助:)
答案 0 :(得分:1)
您仍然可以在编译阶段添加控制器名称,它将如下所示:
var app = angular.module('myApp', []).
directive('communicator', function () {
return {
restrict: 'E',
scope: {},
template: "<input type='text' ng-model='message'/><input type='button' value='Send Message' ng-click='sendMsg()'><br/>",
controller: "@",
name: "controllerName",
compile: function (tElements, tAttributes) {
tAttributes.controllerName = tAttributes.controllerName || "LandlineCtrl"
return;
}
}})