我试图使用带angular的微小mce,但我在指令中的$render函数上遇到了一些问题。更新模型时,不会调用$render函数。
这里有一个plunkr来说明:http://plnkr.co/edit/Ih1nDq?p=preview
我不确定,但我认为它可能与角度1.2有关,因为对于角度1.1.5,它的作用:http://plnkr.co/edit/LXAtHd?p=preview
这是angular 1.2的一个bug,还是我错过了angular 1.2中的一些新东西?
据我所见,$render函数只调用一次。如果你需要更新你对模型更改的看法,你可以在$viewChangeListeners数组中添加一个函数:
ngModel.$viewChangeListeners.push(function () {
updateView(ngModel.$viewValue);
});
我希望有人能提供更多的细节,为什么$render在Angular 1.2中表现不同。
这个答案显示了指令中需要的代码,以便在必要时关闭渲染:
TinyMCE<text区域>双向绑定AngularJS
// When your model changes from the outside, use ngModel.$render to update the value in the textarea
ngModel.$render = function () {
textarea.val(ngModel.$viewValue);
};
也可以与angular ui tinymce(https://github.com/angular-ui/ui-tinymce)
ngModel.$render = function() {
if (!tinyInstance) {
tinyInstance = tinymce.get(attrs.id);
}
if (tinyInstance) {
tinyInstance.setContent(ngModel.$viewValue || '');
}
Plnkr:http://plnkr.co/edit/04AFkp?p=preview
但是,根据加载DOM的时间,您可能需要向上设置指令的优先级。:-)