2016-08-09 119 views
1

Ich bin die popover Richtlinie von AngularStrap verwenden. Ich habe eine Sammlung von Objekten, die als Umschalter gerendert werden. Wenn auf die Schalter geklickt wird, werden die Daten im Bereich nicht geändert ... Ich habe viele verschiedene Möglichkeiten ausprobiert, dies zu tun.Tief Uhr auf Array funktioniert nicht in AngularJS Datenbindung

Dies ist die Steuerung des popover

app.controller('CurvesPopoverCtrl', ['$scope', '$filter', 'AppData', 
    function($scope, $filter, AppData) { 
     'use strict'; 

     $scope.popoverCurrencies = AppData.getCurrencies(); 
     $scope.$watch ('popoverCurrencies', function(val) { 
      if(val !== null && val !== undefined){ // only fires when popover opens. 
       console.log("toggled", val); 
       //AppData.setCurrencies($scope.currencies); 
      } 
     }, true); // deep watch 


    } 
]); 

Dies ist die Vorlage des popover ist

<div class="well curves-popover" ng-controller="CurvesPopoverCtrl"> 
    <div class="row"> 
    <div ng-repeat="currency in popoverCurrencies"> 
     <div class="clearfix" ng-if="$index % 3 == 0"></div> 
     <div class="col-md-4"> 
     <div class="togglebutton"> 
      <label> 
      <span ng-class="currency.iconClass"></span> <span>{{currency.ccy}}</span> 
      <input type="checkbox" checked="currency.build"> 
      </label> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 

Antwort

1

Es wird ein wenig komplizierter, wenn Sie eine Sammlung zu sehen sind versucht, bei der Verwendung von ng- wiederholen. Nach dem docs:

Jede Vorlage Instanz einen eigenen Rahmen bekommt ...

Daher wird die Uhr nicht benachrichtigt, wenn die Werte in diesen anderen Bereichen aktualisiert werden. Eine Abhilfe ist eine separate Steuereinheit zu jedem der Iterationen ng-repeat zu binden, wie here gesehen. Ein anderer, möglicherweise saubererer Ansatz besteht darin, die ng-change-Richtlinie zu verwenden, um die Aktualisierung dieser Werte abzufangen. Ich erklärte es ein wenig here.

+0

Dank endete ich, dies zu tun nach oben – rex