2015-04-01 4 views
0

У меня есть переменная, установленная в true в ng-click, но нижний div не отображается. Я следил за this post, но похоже, что он не работает, может быть, ng-repeat? Вот plunker: http://plnkr.co/edit/90G1KAx9Fmf2SgRs5gYK?p=previewangularjs - ng-show не работает с ng-repeat

angular.module('myAppApp', []) 

    .controller('MainCtrl', function ($scope) { 
     $scope.notes = [{ 
      id: 1, 
      label: 'First Note', 
      done: false, 
      someRandom: 31431 
     }, { 
      id: 2, 
      label: 'Second Note', 
      done: false 
     }, { 
      id: 3, 
      label: 'Finished Third Note', 
      done: true 
     }]; 



     $scope.reach= function (id) { 
      //the assignment below works 
      //$scope.flag = true; 
      alert("hello there"); 
     }; 


}); 



<div ng-app="myAppApp"> 
    <div ng-controller="MainCtrl"> 
     <div ng-repeat="note in notes"> 
     {{note.id}} - {{note.label}} - 
     <a href="#" ng-click="flag = true;reach(111);">click me</a> 

     </div> 

     <div class="row" id="" ng-show="flag">I'm Here</div> 
    </div> 
    </div> 

ответ

0

Я бы посоветовал вам использовать ng-init

<div ng-repeat="note in notes" ng-init="parent=$parent"> 

и после этого

<a href="#" ng-click="parent.flag = true;reach(111);">click me</a> 

Пожалуйста, смотрите демо ниже

angular.module('myAppApp', []) 
 

 
.controller('MainCtrl', function($scope) { 
 
    $scope.notes = [{ 
 
    id: 1, 
 
    label: 'First Note', 
 
    done: false, 
 
    someRandom: 31431 
 
    }, { 
 
    id: 2, 
 
    label: 'Second Note', 
 
    done: false 
 
    }, { 
 
    id: 3, 
 
    label: 'Finished Third Note', 
 
    done: true 
 
    }]; 
 

 

 

 
    $scope.reach = function(id) { 
 
    //$scope.flag = true; 
 
    alert("hello there"); 
 
    }; 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body> 
 
    <div ng-app="myAppApp"> 
 
    <div ng-controller="MainCtrl"> 
 
     <div ng-repeat="note in notes" ng-init="parent=$parent"> 
 
     {{note.id}} - {{note.label}} - 
 
     <a href="#" ng-click="parent.flag = true;reach(111);">click me</a> 
 

 
     </div> 
 

 
     <div class="row" id="" ng-show="flag">I'm Here</div> 
 
    </div> 
 
    </div> 
 
</body>

1

Это должно быть ng-click="$parent.flag = true;reach(111);"

<a href="#" ng-click="flag = true;reach(111);">click me</a> 

Outside ng-repeat

Вы вопрос неясен, вы могли бы использовать нг-повтора внутри ng-repeat, сохраняя переменную в ng-repeat родительской области. и родительский доступ сферы использования $parent. аннотации внутри ng-repeat

<div ng-repeat="note in notes"> 
    {{note.id}} - {{note.label}} - 
    <a href="#" ng-click="$parent.selected = note.id;reach(111);">click me</a> 
    <div class="row" id="" ng-show="$parent.selected == note.id">I'm Here</div> 
    </div> 
</div> 

Inside ng-repeat

 Смежные вопросы

  • Нет связанных вопросов^_^