When adding anything to the DOM that includes bound data, you can use
$compile to get Angular to recognize it. Working version:

http://plnkr.co/edit/9g50Sf?p=preview

Cheers,
Kevin

On Mon, May 11, 2015 at 11:33 AM, Jordi Martínez <[email protected]>
wrote:

> Sorry, I didn't read I can not add code into the mail :-S
>
> Here (http://plnkr.co/edit/nMtLy782IiML91KtAFER?p=preview) you will find
> the correct way to put code :-)
>
>
> El lunes, 11 de mayo de 2015, 17:29:00 (UTC+2), Jordi Martínez escribió:
>>
>> 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.
>

-- 
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