2017-02-26 64 views
0

好了類,所以我有一個ArrayList這蔭重複過像這樣:角過濾不保留更改

<div class="row"> 
      <input type="text" data-ng-model="name" 
       class="resource-search" placeholder="Insert a resource name"> 
     </div> 
     <div class="row"> 
      <div 
       data-ng-repeat="resource in allResources | resourceFilter:name" 
       data-ng-click="addResourceToProject(resource, $event)" 
       class="col-md-2"> 
       <resource profile="resource"></resource> 
      </div> 

而且我使用它的自定義過濾器:

app.filter('resourceFilter', function() { 
return function(input, text){ 
     input = input || []; 
     var out = []; 

     input.forEach(function(res) { 
      if(res.name.toUpperCase().startsWith(text.toUpperCase())) { 
       out.push(res); 
      } 
     }); 
     return out; 
    }; 
}); 

而且然後我嘗試調整每個在控制器中點擊的資源:

$scope.addResourceToProject = function(resource, event) { 

    var elementIsImage = event.target.tagName.toLowerCase() === 'img'; 
    if(index >= 0) { 
     resources = $scope.projectList[index].resources; 
    } else { 
     resources = shareService.getResourcesToNewProject(); 
    } 

    if(elementIsImage) { 
     var target = $(event.target); 
     if(target.hasClass('picked')) { 
      var elementIndex; 
      resources.forEach(function(res) { 
       if(res.id === resource.id) { 
        elementIndex = resources.indexOf(res); 
       } 
      }); 
      resources.splice(elementIndex, 1); 
      target.removeClass('picked'); 
     } else { 
      target.addClass('picked'); 
      resources.push(resource); 
     } 
    } 
}; 

如果您不使用s搜索欄,當使用搜索欄時,以前的類更改被丟棄,即使用搜索欄查找資源並單擊它,類中的更改適用並且一切正常,然後如果再次使用搜索欄,則舊的更改在課堂上被丟棄,但新的適用。數組的添加按照預期工作。

在此先感謝。

回答

0

好吧,用ng-class直接向DOM中添加類就行了,我假設所有的過濾對象都是臨時的,這意味着從控制器改變它們意味着臨時對象發生變化,並且因此僅改變卡在第一搜索,溶液:

<img data-ng-src="{{ profileimg }}" data-ng-class="{'picked': profile.picked}"></img>