AngularJS - 由于多个指令而导致范围冲突

时间:2016-04-20 10:51:11

标签: angularjs angularjs-directive angularjs-scope

我的指令与uib-datepicker-popup之间存在冲突。 我得到了

  

错误:[$ compile:multidir]多个指令[input(module:myModule),uibDatepickerPopup(module:ui.bootstrap.datepicker)]请求新/隔离范围

。这是我的代码:

module.run(function($templateCache){
    if (!$templateCache.get('input.html')){
        $templateCache.put('input.html',
            '<div>' +
                '<span>' +
                    '<button type="button" ng-click="open = true">' +
                        '<span class="glyphicon glyphicon-calendar"></span>' +
                    '</button>' +
                '</span>' +
                '<input type="text" class="form-control" placeholder="TT.MM.JJJJ" ng-model-options="{allowInvalid: true}" is-open="open" />' +
            '</div>');
    }
});

module.directive('input', function ($interpolate, $templateCache) {
    return {
        restrict: 'E',
        scope: true,     
        controller: 'someController',
        compile: function (tElem, tAttr) {
            var content = angular.element($interpolate($templateCache.get('/input.html'))());
            var input = content.find('input');

            _.each(tAttr.$attr, function (attributeName, property) {
                input.attr(attributeName, tAttr[property]);
            }); 

            tElem.replaceWith(content);
        }
    };
});

在视图中,它是:

<input ng-model="myModel" uib-datepicker-popup></input>

uib-datepicker-popup导致错误。我想它正在创造自己的范围,这与顽固的范围相冲突。但我需要指令范围是真的。那我该怎么办?

0 个答案:

没有答案