2016-09-14 59 views
0

我控制器如何在angularjs中将数据传递给其他作用域变量?

<div ng-controller="LeftSideNavWorkController as vm" "> 
    <div ng-repeat="item in vm.items track by $index"> 
    <div ng-click="vm.hideAllElements()>Hide</div> 
    <div ng-show = "showChildren[$index]" >Show/Hide element<div> 
    </div> 
</div> 

在控制器:

vm.hideAllElements = hideAllElements; 
vm.items = [... ... ...]; //some array of items 

function hideAllElements() { 
//how set all showChildren[] variables to false? 
} 

的任务是,当我点击一个链接后,应该将所有vm.show =假

+0

'关闭所有重复elements' - 不随本清?究竟是期望的结果?你能否详细说明一下? – nikhil

+0

编辑。最后的任务是关闭所有打开的元素,当我点击任何

Hide
Serhiy

+0

您需要详细说明什么是关闭和打开的例子,否则,很难判断您想要实现的功能 – nikhil

回答

1

试试这个: HTML:

<div ng-controller="LeftSideNavWorkController as vm" "> 
    <div ng-repeat="item in vm.items track by $index"> 
     <div ng-click="vm.hideAllElements()>Hide</div> 
     <div ng-show = "showChildren[$index]" >Show/Hide element<div> 
    </div> 
    </div> 

CTRL:

(function() { 
    'use strict' 
    angular 
     .module('myApp') 
     .controller('appController', appController); 
    // main.js 
    function appController($scope, $interval) { 
     var vm = this; 
     vm.items = [1, 2, 3, 4, 5]; 
     vm.hideAllElements = hideAllElements; 
     vm.show = true; 


     function hideAllElements() { 
      vm.items.forEach(function(obj, i) { 
       vm.show = false; 
      }); 
     } 
    } 
}()); 
+0

你在哪里接受应用? – Serhiy

+0

请参阅更新 – SuperComupter

0

你只需要做

在您身边

<div ng-controller="LeftSideNavWorkController as vm" "> 
    <div ng-repeat="item in vm.items track by $index"> 
     <div ng-click="vm.hideAllElements()>Hide</div> 
     <div ng-show = "item.show" >Show/Hide element<div> 
    </div> 
</div> 

在控制器功能:

function hideAllElements() { 
    vm.items.forEach(function(item) { 
     item.show = false; 
    } 
} 
+0

我编辑过题。将不再使用vm.show。 – Serhiy

+0

@Serhiy作为控制器级变量在视图内共享,您必须在每个项目中定义属性以处理项目的显示/隐藏。 – jaguwalapratik

相关问题