2014-04-08 79 views
2

問題發生在我使用字符串「home」和「home 123」過濾數據時,如果我過濾「home」,那麼與「home 123」相關的內容也是選擇。這意味着即使對於「home 123」,如果我篩選子字符串「home」,布爾值也會返回true。 http://jsbin.com/jolik/1/editAngularJS過濾器問題:只比較部分字符串(子字符串)

但是,如果我使用與「家」和「產品」無關的字符串的過濾器,我會得到確切的結果。看到這個JS斌演示http://jsbin.com/rusab/1/edit

請幫助在這個問題。預先感謝您的幫助。

的Index.html:

<!DOCTYPE html> 
<html ng-app="myapp"> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/1.2.1/lodash.min.js"></script> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 

    </head> 

<body ng-controller="MyApp"> 
    <select ng-model="keyToDisplay" ng-options="key as key.key for key in keys"></select> 
    <span>{{keyToDisplay.key}}</span> 


    <div ng-repeat="item in data | filter:{'key':keyToDisplay.key}"> 
    <h3>{{item.key}}</h3> 
    <p>{{item.value}}</p> 
    </div> 
    <hr /> 

</body> 
</html> 

工作代碼:app.js

var app = angular.module('myapp', []); 

app.controller('MyApp', ['$scope', function($scope) { 
    $scope.data = [ 
    {key:"home",value:"hk1"}, 
    {key:"home",value:"hk2"}, 
    {key:"home",value:"hk3"}, 
    {key:"home",value:"hk4"}, 
    {key:"product",value:"pk1"}, 
    {key:"product",value:"pk2"}, 
    {key:"product",value:"pk3"}, 
    {key:"product",value:"pk4"}, 
    {key:"service",value:"sk1"}, 
    {key:"service",value:"hk2"}, 
    {key:"service",value:"hk3"}, 
    {key:"service",value:"hk4"} 
    ]; 

    $scope.datafiltered = _.groupBy($scope.data, 'key'); 

    $scope.keys = _.unique($scope.data, 'key'); 

    $scope.keyToDisplay = $scope.keys[0]; 
}]);  

發行代碼:app.js

var app = angular.module('myapp', []); 

app.controller('MyApp', ['$scope', function($scope) { 
    $scope.data = [ 
    {key:"home",value:"hk1"}, 
    {key:"home",value:"hk2"}, 
    {key:"home",value:"hk3"}, 
    {key:"home",value:"hk4"}, 
    {key:"home 123",value:"pk1"}, 
    {key:"home 123",value:"pk2"}, 
    {key:"home 123",value:"pk3"}, 
    {key:"home 123",value:"pk4"}, 
    {key:"service",value:"sk1"}, 
    {key:"service",value:"hk2"}, 
    {key:"service",value:"hk3"}, 
    {key:"service",value:"hk4"} 
    ]; 

    $scope.datafiltered = _.groupBy($scope.data, 'key'); 

    $scope.keys = _.unique($scope.data, 'key'); 

    $scope.keyToDisplay = $scope.keys[0]; 
}]);  
+0

+1'鍵key.key在keys'關鍵;) – angabriel

回答

2

爲一個確切的使用extended filter

看過濾器參數後true

<div ng-repeat="item in data | filter:keyToDisplay.key:true"> 
    <h3>{{item.key}}</h3> 
    <p>{{item.value}}</p> 
    </div> 
    <hr /> 

更多的細節在filter docs

+0

感謝您的幫助。現在它正在工作 –