多指令[指令#1,指令#2]要求隔离范围

Roh*_*han 26 angularjs angularjs-directive

我正在尝试在现有指令的基础上构建一个新指令,但我在我的过程中停止了.加载页面时,我遇到以下错误:

多指令[指令#1,指令#2]要求隔离范围 <easymodal title="Test-Title" text="Text-Text" oncancel="show = false" onok="alert();">

基本指令如下所示:

Rohan.directive('easymodal', function () {
    return {
        restrict: 'E',
//      priority: 200,
        transclude: true,
        replace: true,
        scope:{
            showModal: "=show",
            callback: "=closeFunction",
            dismissable: '&'
        },
        template:
            '<div data-ng-show="showModal" class="modal-container">' +
                '<div class="modal-body">' +
                    '<div class="title"><span data-translate></span><a data-ng-show="dismissable" data-ng-click="dismiss()">x</a></div>' +
                    '<div data-ng-transclude></div>' +
                '</div>' +
                '<div class="modal-backdrop" data-ng-click="dismiss()"></div>' +
            '</div>'
    };
});
Run Code Online (Sandbox Code Playgroud)

我的包装器指令看起来像这样:

Rohan.directive('easydialog', function () {
    return {
        restrict: 'E',
        transclude: true,
        scope: {title: '@',
            text: '@',
            onOk: '&',
            onCancel: '&'},
        replace: true,
        template:
            '<easymodal>' +
                '{{text}} ' +
                '<hr>' +
                '<button ng-click="{{onCancel}}" value="Cancel"' +
                '<button ng-click="{{onOk}}" value="Ok"' +
            '</easymodal>'
    };
});
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像这样:

<easydialog title="Test-Title" text="Text-Text" onCancel="show = false" onOk="alert();" />
Run Code Online (Sandbox Code Playgroud)

起初我虽然我的title属性是冲突的,所以我在html行和我的包装器指令中删除了该属性,但它没有效果.

Lan*_*don 31

您需要更改easydialog模板并换<easymodal><div>.

  • 谢谢,我永远不会猜到这一点. (5认同)
  • @ mxa055我相信Angular将HTML元素与作用域相关联,并且不能将单个HTML元素与多个作用域相关联. (5认同)
  • 你能详细说明吗?首先是什么问题以及如何将它们包装在div中修复它? (2认同)