Angular JS - 具有默认行为的Dynamic指令

时间:2014-12-23 18:35:32

标签: javascript angularjs angularjs-directive

我希望开发人员在使用特定指令时能够使用他选择的控制器。如何实现这一点在此解释: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()">'
  }
})

我感谢任何帮助:)

1 个答案:

答案 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;
            }
    }})