Рассмотрим этот HTMLПочему двусторонняя привязка не работает в некоторых ситуациях?
...
<label>Weight:
<input type="text" ng-model="weight">
</label><br>
<label>Height:
<input type="text" ng-model="height">
</label><br>
<label>
BMI: {{bmi}}
</label>
...
и этот JavaScript
...
$scope.bmi = +$scope.weight/+$scope.height * +$scope.height;
...
Если я даю значения для веса и ввода высоты полей в браузере, поэтому не поле BMI обновляется? Очевидно, что когда контроллер загружается в первый раз, значения $ scope.weight и $ scope.height пусты. Но как только они получают значения из представления, почему $ scope.bmi не использует эти новые значения? Я нашел множество решений для этой проблемы (с помощью $ watch или вызова функции, которая обновляет значение bmi), но может ли кто-нибудь объяснить ПОЧЕМУ код выше не работает?
Если вы посмотрите на ваш проблема таким образом, всякий раз, когда вы пишете '{{someVariable}}' угловой, создает наблюдателя для вас. В вашей текущей логике угловые не создали тех наблюдателей, которые вы можете написать вручную, чтобы ваш текущий код работал. – AndersRehn