Вопрос

Некоторые друзья, и я работаю над проектом. Это второй проект, в котором я работаю с Angularjs, в настоящее время использовал версию 1.2.3.

Несмотря на то, что я иногда нахожу часть своего поведения нечетного, и не понимаю, почему что-то происходит.

Так что ситуация это ... У меня в моем файле cshtml Последующий файл:

<div class="checkbox">
    <label>
         <input name="somecheckbox" type="checkbox" ng-click="click()" ng-model="displayRegardlessOfSomething" />
         <label>Display regardless of something</label>
    </label>
</div>

<h1>{{displayRegardlessOfSomething}}</h1>
.

В моем файле JavaScript у меня есть следующий код внутри директивы:

в самом начале:

$scope.displayRegardlessOfSomething = true;
.

И у меня есть следующее:

$scope.click = function () {
    console.log($scope.displayRegardlessOfSomething)
}
.

И всякий раз, когда я проверяю или снимаю флажок, я всегда получаю true ... однако, осознавая часть состоит в том, что содержание внутри <h1></h1> теги меняется .... Итак, это как я изменяю значение переменной на HTML-слое, но не на уровне JavaScript ...

Почему это происходит?

Я решил проблему с помощью $ parent.displayregardlessofSomething, но я не понимаю, почему это исправило проблему ... Что вызвало проблему в первую очередь?

Это было полезно?

Решение

Я попробовал то, что вы сделали в скрипке, и это работает нормально для меня.

http://jsfiddle.net/nicolasmoise/x9kyu/1/ >

Тот факт, что он работает для вас, когда вы использовали $parent, заставляет меня думать, что родительский контроллер не виноват здесь.Может быть, у вас есть две переменные с теми же именами?

p.s.: Помните, что в JavaScript примитивы передаются по значению, и объекты передаются посредством ссылки.Это причина многих ошибок для угловых разработчиков.Смотрите эту скрипку, где я иллюстрирую свою точку зрения.

с примитивами: http://jsfiddle.net/nicolasmoise/x9kyu/

с объектами: http://jsfiddle.net/nicolasmoise/x9kyu/2/

Другие советы

Если вы не уверены, что все живут в том же объеме, что почти никогда, вы должны всегда иметь точку где-то в своем выражении NG-модели .

myApp.controller('MyController2', function($scope) {

  $scope.model = { displayRegardlessOfSomething: true };

  $scope.click = function() {
    console.log($scope.model.displayRegardlessOfSomething);
  };
});

<input type="checkbox" 
       ng-click="click()" 
       ng-model="model.displayRegardlessOfSomething" />
.

См. см. Этот пулькер для деталей для живой демонстрации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top