2016-07-19 5 views
0

Я после AngularJS сценария:AngularJS - Ng нажмите внутри нг повторить для всех элементов

<div ng-app='app' ng-controller="myctrl"> 
    <ul ng-repeat="module in data.data"> 
    <li >{{module.name}}<br><span ng-click="module.changer = { 'on': 'off', 'off':'on'}[module.changer]; event.PreventDefault;">{{module.changer}} </span></li> 
    </ul></div> 

Пожалуйста, посмотрите на следующий Plunker: https://plnkr.co/edit/a7aTK09lDJ3FlCHgdWIf?p=preview

Когда я нажимаю теперь чейнджера пунктов» '(вкл. или выкл.), он переключится на другое значение для конкретного элемента.

Но я хочу, чтобы значение менялось для всех элементов внутри ng-repeat, когда я нажимаю на один из элементов. Как я могу это сделать ?

ответ

0

Попробуйте это, http://plnkr.co/edit/BFqR1PMsCKugIcLMGake?p=preview

HTML

<!DOCTYPE html> 
<html ng-app="app"> 

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <link href="style.css" rel="stylesheet" /> 
    <script src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9" data-require="[email protected]"></script> 
    <script src="app.js"></script> 
    </head> 

<body> 
    <div ng-app='app' ng-controller="myctrl"> 
    <ul ng-repeat="module in data.data"> 
     <li >{{module.name}}<br><span ng-click="changeValue()">{{module.changer}} </span></li> 
    </ul> 
</div> 

</body> 

</html> 

JAVASCRIPT

(функция() { 'использовать строгое'; угловые .module ('приложение', []) .controller ('myctrl', myctrl);

function myctrl($scope, $http) { 
     $http.get("data.json") 
      .success(function(data) { 
       $scope.data = data; 
      }) 
      .error(function(data, status) { 
       console.error('Repos error', status, data); 
      }); 
     $scope.changeValue = function() { 
      //module.changer = { 'on': 'off', 'off':'on'}[module.changer]; event.PreventDefault; 
      for (var dat in $scope.data.data) { 
       $scope.data.data[dat].changer = ($scope.data.data[dat].changer == 'on') ? 'off' : 'on'; 
      } 
     } 
    } 
+1

работает отлично - Большое спасибо –

1

Привет Как я понял вашу проблему, U может сделать это, определив функцию, которая установит все значения в формате JSON для автоматической смены поля

<div ng-app='app' ng-controller="myctrl"> 
    <ul ng-repeat="module in data.data"> 
    <li >{{module.name}}<br><span ng-click="setValue()"> 
    {{module.changer}} </span></li> 
    </ul>  
</div> 

И в контроллере ...

$scope.setValue=function(){ 
$scope.data.data.forEach(function(it){ 
    it.changer=(it.changer=='off'? 'on':'off'); 
    event.PreventDefault; 
}) 
} 
+0

работает также отлично - спасибо большое –

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