我试图使用带有角度的tiny-mce,但是我在指令中使用$ render函数时遇到了一些麻烦。 当我更新模型时,$ render函数不会被调用。
这里有一个例子来说明:http://plnkr.co/edit/Ih1nDq?p=preview
我不确定,但我认为它可能与角度1.2相关,因为角度为1.1.5, 有用 : http://plnkr.co/edit/LXAtHd?p=preview
这是角度1.2的错误,还是我错过了角度1.2的新东西?
答案 0 :(得分:3)
据我所知,$ render函数只调用一次。如果您需要更新模型更改的视图,可以向$ viewChangeListeners数组添加一个函数:
ngModel.$viewChangeListeners.push(function () {
updateView(ngModel.$viewValue);
});
我希望有人可以提供更多详细信息,以了解为什么$ render在Angular 1.2中表现不同。
答案 1 :(得分:3)
此答案显示您的指令中需要的代码,以便在必要时启动渲染:
TinyMCE <textarea> two way bound with 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的时间,您可能需要在指令上设置优先级。 : - )