2014-07-25 53 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函數索引,因此可以將它拼接出來。該DOM會自動進行更新,並從列表中刪除:

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

在你正在做的是不同的東西,你只想隱藏它時,你將推動指數到另一個數組,然後使用類似ng-showng-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