5

ng-init controlla la modifica della proprietà istanziata come fa ng-model?ng-init controlla il cambiamento della proprietà istanziata come fa ng-model?

A quanto pare no, così mi sono messo un orologio come illustrato di seguito:

app.js

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.$watch('myProp1', function(newVal, oldVal){ 
    $scope.myProp1 = newVal 
    }) 
}); 

html

<body ng-controller="MainCtrl"> 
<input ng-init='myProp="my property"'>{{myProp}}</br> 
<input ng-init='myProp1="my 1 property"'>{{myProp1}}</br> 
<input ng-init='myProp11="my 11 property"' ng-model='myProp11'>{{myProp11}} 

Ecco plnkr

  1. ng-init controlla la modifica della proprietà istanziata come fa ng-model?
  2. Come faccio a osservare i cambiamenti nella proprietà istanziati da ng-init?
  3. Cosa c'è di sbagliato nella funzione orologio $ sopra?

risposta

8

Fa orologio ng-init per il cambiamento in materia di proprietà istanziato come ng-modello fa?

No, è solo per inizializzare una proprietà sull'oscilloscopio. Consiglierei di non usarlo. Markup non è per l'inizializzazione delle variabili, dovresti farlo nel tuo controller il più possibile.

Come faccio a guardare i cambiamenti nella proprietà istanziate da NG-init?

È possibile guardare proprio come guardare qualsiasi altra proprietà, ma a guardarlo non significa che orologio otterrà innescato. Gli orologi vengono attivati ​​solo durante il ciclo di digest e il ciclo di digest viene richiamato solo se l'angolare ha qualcosa a che fare con una determinata azione.

Cosa c'è di sbagliato nella funzione orologio $ sopra?

l'orologio su prop1 non sarà mai eseguito (dopo l'inizializzazione ng Init), perché non si è mai cambiando il valore del modello in quanto non v'è alcuna ngModel legato ad esso. E non c'è nessuna azione angolare sull'elemento e quindi il ciclo di digest non avverrà.

Come esempio basta collegare un evento keyup sull'elemento, e assegnare il valore di ingresso alla proprietà myProp, perché ti sei registrato gestore keyup si innescherà digerire ciclo dopo il gestore viene eseguito, e si vedrà la la guardare sempre eseguito e legame sempre aggiornato

<input ng-init='myProp="my property"' ng-keyup="test(myProp=$event.target.value)">{{myProp}} 

plnkr

+1

Perfetto. Grazie:). – Indyarocks