2013-07-15 7 views
0

Je ne sais pas pourquoi cela ne change pas lorsque ses changements d'objet liés:AngularJS ne se met pas à jour?

Mon HTML:

<div id="account-info" ng-controller="AuthenticateCtrl"> 
    <h5>Account: </h5> 
    {{account}} 
</div> 
<div ng-controller="AuthenticateCtrl"> 
    <div modal="shouldBeOpen" options="opts"> 
     <div class="modal-header"> 
      <h3>Select your account</h3> 
     </div> 
     <div class="modal-body"> 
      <div class="account-btn" ng-repeat="item in items" ng-click="close(item)"> 
       {{item}} 
      </div> 
     </div> 
    </div> 
</div> 

JavaScript My:

var AuthenticateCtrl = function ($scope) { 
    $scope.account= ""; 

    $scope.open = function() { 
     $scope.shouldBeOpen = true; 
    }; 

    $scope.close = function(item) { 
     if (item) { 
      $scope.shouldBeOpen = false; 
      $scope.account= item; 
     } 
    }; 
} 

Pour une raison quelconque, il affiche toujours rien, ou si je mets $ scope.account = "ANY STRING" il affichera "N'IMPORTE QUELLE CHAÎNE" mais ne se mettra pas à jour quand la fonction de fermeture sera appelée.

+1

Vous ne montrez pas où s'appelle close ou quel élément est. Aussi, vous devriez probablement suivre la meilleure pratique d'utiliser un modèle qui a toujours un. dans les références du HTML. – shaunhusain

+1

Alors ... comment s'appelle la fonction de fermeture? – robertklep

+0

Désolé, édité pour inclure l'appel modal à proximité. – Alex

Répondre

3

Ok une tentative avec violon. Premièrement, vous avez deux directives ng-controller qui pointent vers la même fonction. Deuxièmement, je ne comprends pas vraiment le domaine ici, mais je suppose que c'est ce dont vous avez besoin. Voici un fiddle.

<div ng-controller="AuthenticateCtrl"> 
<div id="account-info"> 
    <h5>Account: </h5> 
    {{account.name}} 
</div> 
<div> 
    <div modal="shouldBeOpen" options="opts"> 
     <div class="modal-header"> 
      <h3>Select your account</h3> 
     </div> 
     <div class="modal-body"> 
      <div class="account-btn" ng-repeat="item in items" ng-click="close(item)"> 
       {{item.name}} 
      </div> 
     </div> 
    </div> 
</div> 
</div> 

<script> 
var myApp = angular.module('myApp',[]); 

var AuthenticateCtrl = function ($scope) { 

    $scope.opts = {}; 
    $scope.account = {}; 

    $scope.items = [ 
     {'name':'one'}, 
     {'name':'two'} 
    ]; 

    $scope.open = function() { 
     $scope.shouldBeOpen = true; 
    }; 

    $scope.close = function(item) { 
     if (item) { 
      $scope.shouldBeOpen = false; 
      $scope.account= item; 
     } 
    }; 
} 
</script> 
+0

Il s'agissait d'avoir les deux divs séparés pointant vers le même contrôleur, une fois que je les ai séparés, mon code a fonctionné comme était. Merci! (Aussi mes travaux modaux indépendants du placement doc. J'aurais dû les combiner dès le départ, merci pour le coup de pied dans la bonne direction haha) – Alex

Questions connexes