私のチェックボックスにAngular(1.5)を使ってチェックを入れていない奇妙なシナリオがあります。私はクロムBatarangをチェックして、それはまだ私のリンクをクリックすると、私のチェックボックスがチェックされていない大丈夫だと思われる!AngularJSがハイパーリンクのng-clickイベントで自分のチェックボックスをチェックしていません
私はng-repeatを使って表示される配列を持っています。 ng-repeat内には、チェックボックスと、チェックボックスを制御したいハイパーリンクがあります。
ハイパーリンクがチェックボックスをチェックしていない理由を誰でも見ることができますか?
すべてこの方法がやっている
<tr ng-repeat="o in vm.myArray track by o.Id">
<td>
<!-- This works (changes the checkbox to checked)-->
<a href ng-click="o.Highlight=true">Just to test it (this works)</a>
<input type="checkbox" ng-model="o.Highlight" ng-click="vm.highlight(vm.myArray.Days, o.Name);" style="width: 15px" />
<!-- This fails (I'm expecting it to check the checkbox) -->
<a href ng-click="vm.highlight(vm.myArray.Days, o.Name)">
{{o.Name}}
</a>
</td>
</tr>
マークアップは、その後のものを制御するために使用されるプロパティ「ハイライト」(boolean)を持つオブジェクトの配列を反復処理される多くのおかげでは、 UIでハイライトプロパティでチェックボックスをオンにするかどうかを制御します。
このメソッドがChromeのbatarangで行っていることを見ると、Highlightプロパティが正しく設定されていますが、これはチェックボックスを切り替える必要がありますが、何らかの理由でそうではありません。コントローラで
ハイライト方式
(function() {
"use strict";
angular.module("bla").controller("homeCtrl", ["stuff", function (stuff) {
var vm = this;
vm.highlight = highlight;
// Iterate through array and if the fieldToHighlight matches the item.Name then toggle the item as highlighted.
function highlight(collection, fieldToHighlight) {
for (var i = 0; i < collection.length; i++) {
var element = collection[i];
if (element.Items != null) {
for (var counter = 0; counter < element.Items.length; counter++) {
var item = element.Items[counter];
if (fieldToHighlight == item.Name) {
if (item.Highlight) {
item.Highlight = false;
}
else {
item.Highlight = true;
}
}
}
}
}
}
更新クロム
のコメント
角プラグインした後にこれがハイライトプロパティがfalseのonloadに設定されることを示します。テストハイパーリンクをクリックすると、Highlightプロパティが正しくtrueに変更されます。
angular plugin for chrome showing property correct data type
アップデート2 - クロムのデバッグは、私が失敗したハイパーリンクをクリックしたときに、このデバッグポイントだった正しく
の値を設定していることを示します。コメントの後に
code being debugged showing the highlight is working even though the ui is now updating
アップデート(2016年12月13日)のコードで
コメント
<tr ng-repeat="o in vm.myArray track by o.Id">
<td>
<!-- checkbox -->
{{o.Highlight}}
<!-- clicking this changes the echo'ed variable immediately above but doesn't toggle the UI behaviour that relies on o.Highlight -->
<input type="checkbox" ng-click="vm.highlight(o);" ng-model="o.Highlight" />
<!-- name -->
<!-- clicking this toggles the right behaviour in the UI which relies on the o.Highlight property but it doesn't toggle the checkbox to be checked or unchecked -->
<a href ng-click="vm.highlight(o)">{{o.Name}}</a>
</td>
</tr>
チェックボックスをオンにするには、$ scope.Items [0] .Highlight = trueのように$ scopeを試してみる必要があります。 –
大丈夫ですが、なぜテストリンクが機能し、ハイライト機能の中でitem.Highlightが正しく動作していますか? – Martin
"基準"変数はどこから来ていますか?それは範囲外だと思われる... – Vi100