模型更改时不调用ngModel。$ render

时间:2013-11-27 14:15:36

标签: angularjs angular-ui tinymce-4

我试图使用带有角度的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的新东西?

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的时间,您可能需要在指令上设置优先级。 : - )