0

我有一个带有标签的弹出窗口。我在该弹出窗口中使用了选项卡和 tinymce 指令。

使用 tinymce 指令,选项卡工作正常,如果我在单击选项卡时添加 tiny mce 指令,则整个页面都会刷新。我在我的代码中包含了 tinymce 库。

// tinymce directive
 app.directive('tinymce', function() {
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {

            element.tinymce({
                // Location of TinyMCE script
                script_url: 'js/assets/tiny_mce.js',

                // General options

                theme: "advanced",
                theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
                theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
                theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_statusbar_location : "bottom",
                theme_advanced_resizing : true,

                // Change from local directive scope -> "parent" scope
                // Update Textarea and Trigger change event
                // you can also use handle_event_callback which fires more often
                onchange_callback: function(e) {

                    if (this.isDirty()) {
                        this.save();

                        // tinymce inserts the value back to the textarea element, so we get the val from element (work's only for textareas)
                        ngModel.$setViewValue(element.val());
                        scope.$apply();

                        return true;
                    }
                }
            });

        }
    };
});



// tabs and panes directive
app.directive('tabsx', function() {
return {
    restrict: 'E',
    transclude: true,

    controller: function($scope) {
                        $scope.panes = new Array();
                        //var panes = $scope.panes = [];
                        $scope.select = function(pane) {
                            angular.forEach($scope.panes, function(pane1) {
                                pane1.selected = false;
                            });

                            pane.selected = true;
                        };


                        this.addPane = function(pane) {

                            if ($scope.panes.length == 0) $scope.select(pane);

                            $scope.panes.push(pane);

                        };

    },
    template:
        '<div class="tabbable tabs-left prime-tabbable">' +
        '<ul class="nav nav-tabs">' +
        '<li ng-repeat="pane in panes" ng-class="{active:pane.selected}">'+
        '<a class="prime-tabs" href="" ng-click="select(pane)">{{pane.title}}</a>' +
        '</li>' +
        '</ul>' +
        '<div class="tab-content prime-tab-content" ng-transclude></div>' +
        '</div>',
    replace: true
};
}).directive('panex', function() {
    return {
            require: '^tabsx',
            restrict: 'E',
            transclude: true,
            scope: { title: '@'},
            link: function(scope, element, attrs, tabsCtrl) {
                tabsCtrl.addPane(scope);


            },
            template:
                '<div class="tab-pane prime-panes" ng-class="{active: selected}" ng-transclude>' +
                '</div>',
            replace: true
    };
}); 




 \\ html code
<tabsx>

            <panex title="Settings">
                <form name="myForm">
                    <label>Title : </label> 
                    <textarea style="resize: none;" name="myTitle" ng-model="myTitle" value={{getMyTitle()}} ng-required="true" ></textarea>

                    <label>Content: </label>    
                    <textarea tinymce ng-model="myContent" ng-required="true" >{{getMyContent()}}</textarea>
                        <!-- {{getMyContent()}} -->
                    <div class="popup-input-set">
                        <div class="popup-labels">Priority:</div>
                        <div class="popup-input">
                            <select  ng-model="myPriority" ng-options="priority for priority in myPriorities" style="width:100px;" ng-required="true"></select>
                        </div>
                     </div>

                    <div class="popup-input-set">
                        <div class="popup-labels">Due Date</div>
                        <div class="popup-input">
                            <input ui-date-format ui-date="dateOptions" ng-model="myDueDate" placeholder="Due date" style="width:75px;height:25px;" value={{getMyDueDate()}} ng-required="true"></input>
                        </div>
                    </div>

                    <div class="popup-input-set">
                        <div class="popup-labels">Effort</div>
                        <div class="popup-input">
                            <input type="text" ng-model="myEffort" placeholder="effort" style="width:75px;" value={{getMyEffort()}} ng-required="true">
                        </div>
                    </div>

                    <div class="popup-input-set">
                        <div class="popup-labels"></div>
                        <div class="popup-input">
                            <br/>

                        </div>
                    </div>  

                    <div style="clear:both;"></div>

                    <label>Type : </label>
                    <select ng-model="myType" ng-options="myType for myType in myTypes" ng-required="true"></select>

                    <br /> <br />
                    <button class="btn btn-success" ng-click="editNoteDetails(myTitle,myContent,myDueDate,myEffort)" modal-close="myModalNoTemplate" >Save</button>
                    <button type="reset" class="btn btn-success" modal-close="myModalNoTemplate">Cancel</button>    

                </form>
            </panex> 
</tabsx>

有谁知道为什么会这样?

4

0 回答 0