AngularJS:从自定义指令中调用自定义指令似乎不起作用

时间:2012-10-10 03:50:47

标签: javascript angularjs directive

我有plunker here that demostrates it

我可以创建两个指令。在这种情况下,一个名为zMonthSelect,另一个名为zTest,引用zMonthSelect。如果它们是嵌套的,Angular似乎不喜欢它们。这是为什么?我该怎么做才能解决它?

以下是代码:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
});

app.directive('zMonthSelect', function () {
    return {
        restrict: 'E',
        priority: 1000,
        scope: {
            month: '=month'
        },
        template: '<select ng-model="month">' +
            '<option value="1">Jan</option>' +
            '<option value="2">Feb</option>' +
            '<option value="3">Mar</option>' +
            '<option value="4">Apr</option>' +
            '<option value="5">May</option>' +
            '<option value="6">Jun</option>' +
            '<option value="7">Jul</option>' +
            '<option value="8">Aug</option>' +
            '<option value="9">Sep</option>' +
            '<option value="10">Oct</option>' +
            '<option value="11">Nov</option>' +
            '<option value="12">Dec</option>' +
            '</select>',
        controller: function($scope) {
        }
    };
});


app.directive('zTest', function(){ 
  return { 
    restrict: 'E',
    priority: 1,
    scope: {},
    template: 'Test: <z-month-list month="1"></z-month-list>',
    controller: function($scope) {
    }
  };
});

和HTML:

<body ng-controller="MainCtrl">
  zTest: <z-test></z-test><br/>
  zMonthSelect: <z-month-select></z-month-select><br/>
</body>

1 个答案:

答案 0 :(得分:5)

您的指令名称不匹配。在zTest指令中,您尝试使用<z-month-list>,但您的指令名为zMonthSelect。只需将zTest指令更改为我们<z-month-select>即可。见http://plnkr.co/edit/x2i8lv?p=preview

或者您可以将内部指令重命名为zMonthList。见http://plnkr.co/edit/aQlSqK?p=preview