2014-07-25 2 views
1

저는 AngularJS에 새로 왔으며 컨트롤러의 모든 범위 변수를 삭제할 수 있다는 것을 알고 있습니다. ng-repeat와 함께 ng-controller를 사용하고 있습니다.컨트롤러의 모든 스코프 변수를 삭제할 수 있습니까? AngularJS

<div ng-controller="main"> 
<div ng-repeat="x in list" ng-controller="test"> 
    <input type="text" ng-model="text"> 
    <span ng-click="remove($index)"> x </span> 

<div> 
</div> 

JS

myapp.controller('main',function($scope){ 

    $scope.list=[1,2,3,4] 
}) 

myapp.controller('test',function($scope){ 
    $scope.text="untitiled" 
}) 

내가 클릭 한 scope.Can 누군가가 나를 도울 제거하거나 나에게 더 좋은 방법을 제안 해주십시오 싶습니다. 감사합니다

+0

당신이 클릭 범위를 무엇을 의미합니까? 이 함수가 아무 일도하지 않길 바랄 뿐인가? – lucuma

+0

ng-repeat의 각 요소마다 다른 범위가 있다고 생각합니다. 클릭 한 작업의 의미는 분명합니다. – vipin

+0

'클릭 된 범위 제거 '는 나에게별로 의미가 없습니다. b/c를 클릭 한 후에 다른 작업을 수행하기를 원한다면 항목이 제거되어 더 이해할 수 있습니다. – lucuma

답변

2

질문은 분명하지 않지만 클릭 한 후에 항목을 제거하고 싶을 것 같습니다. 인덱스가 remove으로 전달되므로 인덱스를 결합 할 수 있습니다. 다른 배열에 인덱스를 누르면 다음 ng-show 또는 같은 것을 사용하는 것입니다, 당신은 그것을 숨기려한다는 점에서 다른 무언가를하고있는 이벤트에

$scope.remove = function(i) { 
    $scope.list.splice(i,1); 
    console.log($scope.list); 
} 

: DOM은 자동으로 업데이트하고 목록에서 그것을 제거합니다 ng-hide.

$scope.remove2 = function(i) { 
     $scope.hideList.push(i); 
    } 

    $scope.shouldHide = function(i) { 
     return $scope.hideList.indexOf(i)!=-1; 
    } 

<div ng-repeat="number in list2" > 
{{number}} 
<span ng-hide='shouldHide($index)' ng-click="remove2($index)"> x </span> 
</div> 

다음은 두 시나리오의 간단한 예입니다. 실생활에서 대개 우리는 객체 배열을 다루고 있습니다. 객체 중 하나의 속성을 숨기고 그 방식으로 제어하는 ​​것입니다.

데모 : http://plnkr.co/edit/G7UINKUCBJ4yZhQNtuJ2?p=info

실제로 범위에서 모든 키를 제거하려면 :

function removeKeys() { 
    for(key in $scope) { 
    if (key.substr(0,1)!='$' && key!='this') 
    delete $scope[key]; 
    } 
} 
+0

컨트롤러에 문제가 있습니다. 나는 ng-repeat와 함께 cotroller를 사용하고있다. – vipin

관련 문제