2016-11-29 2 views
0

要素の属性(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; 
    } 

次のように検査官からコンパイルされたコードは次のとおりです。

Compiled html

私が適用さ$を使用する方法について読み、$コンパイルしていますどのように動作させるかはわかりません。

ヘルプを評価してください。

UPDATE:私はあなたが私を助ける助けるために、もう少し説明を含めています

。私はisOpenの値をテストメソッドに送る必要がある。なぜなら、isOpenがそのtime.egでtrueかfalseかによって、別のロジックを実装する必要があるからです。別のボタンがクリックされた場合、閉じたメソッドを使用する必要はありませんなど

+0

は、なぜあなたはテンプレートで値を初期化しますか? スコープ 'scope.isOpen = true;で' ng-init'は必要ありません。 –

+0

設定者を使用して値を更新することはできますが、角度が変更を検出するまで効果は適用されません。すべての変更はループ内で監視され、評価されます。 $ applyを呼び出すと、ループが再生され、変化が検出され、次にエフェクトが再生されます。 – Nico

+0

@Nicoもし$ applyを使う必要があるのであれば、物事を完全に角度のない方法でやっているということです! –

答えて

0
_title = d.create('h1') 
    .setClasses(['h2', 'pull-left']) 
    .setAttributes([['id', ++number + "values"], ['ng-click', 'isOpen=!isOpen'], ['ng-init', 'isOpen=true']]) 
    .setInnerHTML(_titleHtml) 
    .toElement(); 

を展開すると....

+0

Thanks Nico。それはコードがもともとどのようになったかです。状態を送信してメソッドに設定する必要があります。なぜなら、ここには含まれていないメソッドで実装したいロジックが追加されているからです。 –

関連する問題