5

Czy ng-init monitoruje zmiany w tworzonej instancji, jak na przykład model ng?Czy ng-init kontroluje zmiany w tworzonej instancji, jak na przykład model ng?

Najwyraźniej nie, więc mogę ustawić zegarek, jak pokazano poniżej:

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

Oto plnkr

  1. Czy ng-init monitoruje zmiany w tworzonej instancji, jak na przykład model ng?
  2. Jak mogę obejrzeć zmiany w właściwości utworzonej przez ng-init?
  3. Co jest nie tak z powyższą funkcją $ watch?

Odpowiedz

8

Czy ng-init czuwa nad zmianą właściwości instancji, takich jak model ng?

Nie, służy tylko do zainicjowania właściwości w zakresie. Polecam, aby go nie używać. Markup nie jest przeznaczony do inicjalizacji zmiennych, powinieneś zrobić to w swoim kontrolerze tak bardzo, jak to tylko możliwe.

Jak mogę obejrzeć zmiany w właściwości utworzonej przez ng-init?

Możesz oglądać tak, jak oglądasz dowolną inną nieruchomość, ale oglądanie jej nie oznacza, że ​​zegarek zostanie wyzwolony. Zegarki są uruchamiane tylko podczas cyklu trawienia, a cykl trawienny jest wywoływany tylko wtedy, gdy kątowe ma coś wspólnego z konkretną akcją.

Co jest nie tak z powyższą funkcją $ watch?

Zegarek na prop1 nigdy nie zostanie wykonany (po inicjalizacji ng Init), ponieważ nigdy nie zmieniają wartości modelu, ponieważ nie ma ngModel związany z nim. I nie ma akcentu kątowego na element, a zatem cykl trawienia nie nastąpi.

Jako przykład wystarczy dołączyć zdarzenie keyup na elemencie i przypisać wartość wejściową do właściwości myProp, ponieważ zarejestrowałeś program obsługi wywołania, który uruchomi cykl trawienia po uruchomieniu obsługi, a zobaczysz oglądać coraz wykonany i wiązanie zaczyna aktualizacja

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

plnkr

+1

Perfect. Dzięki:). – Indyarocks

Powiązane problemy