要素の属性(isOpen)を設定する必要があります。 trueまたはfalseに値を「ハードコード」すると機能しますが、「テスト」メソッドから値を取得すると値が設定され、アイコンが変更されますが、アコーディオンは開閉しません。角またはJavascriptで属性を設定する
_title = d.create('h1')
.setClasses(['h2', 'pull-left'])
.setAttributes([['id', ++number + "values"], ['ng-click', 'isOpen = test(isOpen)'], ['ng-init', 'isOpen = true']])
.setInnerHTML(_titleHtml)
.toElement();
これは、それが呼び出すメソッドです:
scope.test = function (isOpen) {
isOpen = !isOpen;
return isOpen;
}
次のように検査官からコンパイルされたコードは次のとおりです。
私が適用さ$を使用する方法について読み、$コンパイルしていますどのように動作させるかはわかりません。
ヘルプを評価してください。
UPDATE:私はあなたが私を助ける助けるために、もう少し説明を含めています
。私はisOpenの値をテストメソッドに送る必要がある。なぜなら、isOpenがそのtime.egでtrueかfalseかによって、別のロジックを実装する必要があるからです。別のボタンがクリックされた場合、閉じたメソッドを使用する必要はありませんなど
は、なぜあなたはテンプレートで値を初期化しますか? スコープ 'scope.isOpen = true;で' ng-init'は必要ありません。 –
設定者を使用して値を更新することはできますが、角度が変更を検出するまで効果は適用されません。すべての変更はループ内で監視され、評価されます。 $ applyを呼び出すと、ループが再生され、変化が検出され、次にエフェクトが再生されます。 – Nico
@Nicoもし$ applyを使う必要があるのであれば、物事を完全に角度のない方法でやっているということです! –