$render stopped working at angular 1.2.2 (file validation directive)

后端 未结 2 780
灰色年华
灰色年华 2021-01-12 18:53

I have migrated from angular 1.0.8 to angular 1.2.2 yesterday, and beside a bunch of other things that got broken and I\'ve already fixed, the $render function on the follow

相关标签:
2条回答
  • 2021-01-12 19:17

    I've tested this with angular 1.2.10 for a textbox and whatever priority I set, original input $render method was set afterwards overriding my $render function.

    This problem occurs in angular-ui tinymce module as well which can not render the initial model value. So I changed the timeout part in tinymce directive to override the original $render method as follows:

    var render = function() { // my rendering code }    
    setTimeout(function () {
                          tinymce.init(options);
                          if (ngModel.$render != render) {
                              var originalRender = ngModel.$render;
                              ngModel.$render = function() {
                                  originalRender();
                                  render();
                              };
                      }
                  });
    

    This way, after all "link" functions are executed, you can override the render method.

    0 讨论(0)
  • 2021-01-12 19:22

    Increase the priority of your directive to something above 0.

    For example:

    myApp.directive('validFile', function ($filter) {
       return {
         priority: 10,
    

    Here's a detailed explanation of the problem that I found associated with this ui-tinymce issue that's, at it's root, the same as yours.

    The short version of the explanation being that this change causes input's $render to take precedence over your own. By bumping the priority of your directive you, in effect, give your $render priority- as it was before that change in 1.2 rc3.

    0 讨论(0)
提交回复
热议问题