Я пытаюсь изменить значение флажка на основе другого значения флажка, но это изменение, похоже, не влияет на модель.Угловое обновление флажка не обновляет модель
Вот пример кода выпуска:
http://plnkr.co/edit/eFOn3cejwKU01LkKNC1s?p=preview
HTML файл
<!DOCTYPE html>
<html>
<head>
<script data-require="[email protected]*" data-semver="1.2.0-rc3-nonmin" src="http://code.angularjs.org/1.2.0-rc.3/angular.js"></script>
<link data-require="[email protected]*" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="main" ng-controller="DemoCtrl">
<pre>
A value: {{a}}
B value: {{b}}
</pre>
A <input type="checkbox" ng-model="a" />
B <input type="checkbox" ng-model="b"
ng-disabled="a"
ng-checked="!a && b"
/>
</body>
</html>
И пустой контроллер:
var app = angular.module('main', [])
.controller('DemoCtrl', function($scope) {
});
Насколько я читал , изменение Dom не изменяет модель, и когда я пытаюсь вызвать $ apply, дайджест уже работает, поэтому я немного потерян.
Я не хочу ставить $ watch на первый флажок, потому что мой пример уже довольно сложный.
Есть ли альтернативное решение, которое не связано с написанием кода js в контроллере для этой проблемы?
Я не совсем понятно, что вы пытаетесь сделать здесь. Вы пытаетесь изменить один флажок, щелкнув другого? Из того, что я интерпретирую, похоже, вы пытаетесь его проверить, если другой не проверен? Не могли бы вы уточнить, чтобы быть ясными. Вам не нужны часы для этого. – ajmajmajma
То, что я пытаюсь сделать, - установить b-модель на false, если она отмечена. Таким образом, полная демонстрация будет проверкой b, затем проверьте a, b отключен и не отмечен, а модель b по-прежнему верна. – biaggi
Спасибо всем за ваши комментарии, моя реальная проблема довольно сложная, чем эта, это просто упрощение Иллюстрируйте его. Мое окончательное решение будет состоять в том, чтобы $ смотреть элемент «a», потому что даже когда b не снят, как только это было модификацией dom, и даже когда оно было вызвано угловой директивой, это не будет обрабатывается в дайджесте, поэтому, если в элементе dom или модели нет события, дайджест не будет принимать во внимание это изменение. – biaggi