When I create a new DOM element (out of angular), angular doesn't take it 
under control. Why?

I show you a simplified example :

<html ng-app="gemStore">
  <head>
        <script 
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js";></script>
    </head>
  <body ng-controller="StoreController as store">
    <button onclick="changeDom();">CreateDomElementWithDataBinding</button>
    <input type='text' ng-model='store.bright'/>
    <div id='placeNewElement'>
    </div>
    <script type="text/javascript">
      angular.module('gemStore',[]).controller('StoreController', function(){
          this.name = 'diamont';
          this.bright = 3;
      });
      
      var changeDom = function(){
          document.getElementById('placeNewElement').innerHTML = "<input 
type='text' ng-model='store.name'/>";
      };
    </script>
  </body></html>

Here, initial DOM is created with an input that have databinding with 
scope.bright data model. When you click on the button, a new element is 
created, with ng-model to make a databinding with scope.name. But when new 
DOM element is created, angular doesn't 'managed' its element (doesn't show 
scope.name value, doesn't put typical angular classes (ng-valid, etc) to 
the element).

I searched a lot and I can't solve it :-( I tryed to make scope.apply() to 
upload model, but this appears not to be the problem (because angular 
doesn't know this new element).

I can not change the way that new DOM elements are created (is not my hand 
to change). But I can execute JS after create new elements. Mey be angular 
just can 'register data binding' on DOM elements when document loads?

Tnaks for help! ;-)

Jordi

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to