ngModel$模型更改时不调用渲染



我试图使用带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的时间,您可能需要向上设置指令的优先级。:-)

最新更新