2017-07-15 29 views
-1

によって子:上記のコードはfirebaseで動作しますリファレンス私は、次のdiv要素持っ

<div ng-repeat="state in Home.overlaySettings.data.games[0].events[0].states"> 
    <div class="col-xs-12 col-md-4 noPadding" ng-repeat="feature in state.features" ng-show="state.name == Home.overlaySettings.data.games[0].events[0].state"> 
     <div class="form-group"> 
      <button 
       type="button" 
       class="btn largeButton" 
       ng-class="{'btn-success':feature.enabled == true,'btn-danger':feature.enabled == false}" 
       ng-click="feature.child('enabled').set(!feature.enabled);"> 
        {{feature.name}} 
      </button> 
     </div> 
    </div> 
</div> 

を。私がしたいのは、ボタンをクリックしたときに値をtrueからfalseに設定し、もう一度クリックするとtrueに戻すことです。

私の問題は、値を保存する方法を見つけることができないということです。この機能は多くの機能の中にあります。したがって、私はルート要素からそれを検索することはできません。

Home.OverlaySettingsが何であるかを表示するには、この機能を見て:

function OverlaySettings(fbURL, $firebase, $q) { 
    var fb = {"data":null,"ref":null,"ready":$q.defer()}; 
    initFB(); 
    function initFB() { 
     fb.ref = new Firebase(fbURL); 
     fb.data = $firebase(fb.ref).$asObject(); 
     fb.data.$loaded( 
      function(data) { 
       fb.ready.resolve() 
      } 
     ); 
    } 
    return function() { 
     return fb; 
    } 
} 

はどうやって値を保存することができますか?

+0

この 'Home.overlaySettings.ref.feature.child( 'enabled')'の '機能は定義されていません。これを削除すると、データベースに値を設定します。あなたが設定したい値であるかどうかは、あなたが共有したものからは分かりません。 –

+0

@FrankvanPuffelenいいえそうではありません。私はfeature.enabledの値を保存しようとしています。問題は、機能をループしているため、保存する必要のある機能がわからないということです。現在の機能の完全なパスを取得するにはどうすればよいですか? – Bojan

+0

ああ。私はあなたが 'feature。$ id'を探していると思います。だから 'Home.overlaySettings.ref.child(feature。$ id).child( 'enabled')。set(!feature.enabled);' https://stackoverflow.com/questions/38045352/how-to-getを参照してください。 firebase配列オブジェクト、https://stackoverflow.com/questions/28997282/angularfire-firebase-geting-a-single-element-from-firebasearray-in-order-t、https:///stackoverflow.com/questions/28862462/how-to-pull-key-name-from-array-of-objects-in-angularfire –

答えて

0

以下のようにお試しいただけます。

Home.overlaySettings.data.games[0].events[0].states[$parent.$index].features[$index].child('enabled').set(!Home.overlaySettings.data.games[0].events[0].states[$parent.$index].features[$index].enabled); 

または、コントローラでこのジョブを実行できます。

+0

残念ながら、それはうまくいきませんでした。 – Bojan

関連する問題