angularjs在另一个指令模板中使用指令

时间:2017-07-26 10:33:10

标签: javascript angularjs tabs

我正在尝试在指令模板中创建一个选项卡,该选项卡有效但我不知道如何在选择适当的选项卡时呈现其他指令。

这是我的tabs指令的代码。

angular.module('myApp')
    .directive('q2022Tabs', ['$rootScope', function ($rootScope) {
        return {
            restrict: 'EA',
            transclude: true,
            scope: {
                max: '=',
                label: '='
            },
            require: "q2022PieRadarChart" + "q2022RadarChart", 
            template: `
            <form name="outerForm" class="tab-form-demo">
    <uib-tabset active="activeForm">
      <uib-tab index="1" heading="Radar Chart">
        (content tab)
      </uib-tab>
      <uib-tab index="2" heading="Pie Radar Chart">
        (content tab 2)
      </uib-tab>
    </uib-tabset>
  </form>
        `
        };
    }])
    .controller('ExController', ['$scope', '$rootScope', function ($scope, $rootScope) {


    }])

1 个答案:

答案 0 :(得分:0)

首先,我更新了模板代码,如下所示:

template: '<div class="views">' +
          '    <div class="view-wrapper" ng-repeat="view in views">' +
          '        <div view="{{view.dir}}"></div>' +
          '    </div>' +
          '</div>',

请注意,我创建了一个新的“view”指令。接下来,视图指令定义如下:

app.directive('view', ['$compile', function (compile) {

    return {
        restrict: 'A',
        scope: {
            view: '@'
        },
        replace: true,   
        template: '<div class="view"></div>',

        controller: ['$scope', function (scope) {
            scope.$watch('view', function (value) {
                scope.buildView(value);
            });
        }],

        link: function (scope, elm, attrs) {

            scope.buildView = function (viewName) {
                var view = compile('<div ' + viewName + '></div>')(scope);
                elm.append(view);
            }
        }
    }
}]);

基本上,view.dir变量作为属性传递给'view'指令,然后该指令监视它的值并用其中的指令编译模板。