2015-11-12 35 views
0

我正在使用Tinymce編輯器通過ui-tinymce Angular指令。是否可以動態生成angular-ui tinymce編輯器的選項?

<textarea ui-tinymce="tinymceOptions" ng-model="email.body"></textarea> 

我不能初始化與content_css選項設置,以輸出從一個XHR請求,因爲該指令的link函數在XHR請求的回調之前調用獲得的值編輯器。因此,選項不會傳遞給指令。

Template.get({ id: $routeParams.id }, function(response) { 
    $scope.template = response.attributes; 

    $scope.tinymceOptions = { 
     inline: false, 
     plugins : 'code importcss preview code', 
     skin: 'lightgray', 
     theme : 'modern', 
     content_css: $scope.template.content_css 
    }; 
}); 

如果我廣播初始化選項後$tinymce:refresh事件,編輯器被重新初始化新的選項,但老編輯不會被刪除。

我很少有角度指令的經驗,是否可以觀察選項中的變化並在編輯器中反映它們?

回答

0

您可以等待異步加載的選項,並在獲取它們之後才顯示編輯器。概念證明:

查看:

<div ng-controller="MyCtrl"> 
    <div ng-if="!tinymceOptions">Please wait, we're initliazing editor for you!</div> 
    <div ng-if="tinymceOptions"> 
     <textarea ui-tinymce="tinymceOptions" ng-model="email.body"></textarea> 
    </div> 
</div> 

和控制器:

module.controller('MyCtrl', function($scope) { 
    Template.get({ id: $routeParams.id }, function(response) { 
     // your code here 
    }); 
}); 
+0

尼斯之一,但這種解決方案的問題在於,用戶可以通過加載不同的模板更改的選項幾次。 –

+0

您可以向範圍添加一個標誌,即'tinyMceChangingConfig'。在'ng-if'中使用它,並在用戶更改配置時將其設置爲'false',並在配置獲取時將其設置爲'true'。 – fracz