AngularJSチェックボックス奇数の動作
-
21-12-2019 - |
質問
友達と私はプロジェクトに取り組んでいます。これは、私がAngularjsを使って働いている2番目のプロジェクトで、現在バージョン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
を使用したときにあなたに機能するという事実は、ここで親コントローラが障害にあると思います。多分あなたは同じ名前の2つの変数を持っていますか?
p.S。:JavaScriptでは、プリミティブは値で渡され、オブジェクトは参照によって渡されます。これは角度開発者のための多くの間違いの原因です。私は私のポイントを説明するこのフィドルを見てください。
プリミティブ付き: http://jsfiddle.net/nicolasmoise/x9kyu /
他のヒント
あなたがほとんど同じ範囲に住んでいるのを確信していない限り、あなたはほとんど決してあなたの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" />
.