2016-03-18 162 views
1

我有一些數據和一個選擇控制,你可以從我的代碼示例中看到。它適用於我,但我希望能夠按類型過濾數據。在我的代碼示例中,我展示了一種基於類型值爲1的數據過濾數據的方法。我不確定我創建select的方式是否導致這個簡單的內聯過濾器不起作用,或者如果我做錯了什麼?如何通過ng選項中的屬性過濾項目?

$scope.data = [{ 
name : "5 play", 
type : 1 
}, { 
name : "one on one", 
type : 2}, { 
name : "two on one", 
type : 2}]; 

<select class="form-control" ng-model="selectedRule" 
ng-options="item as (item.Name) for item in data track by item.Name | filter:{type:1}"></select> 
+1

不知道它是否會解決它,但追蹤應該總是在末端 – juvian

+0

@juvian,就是這樣......我這麼愚蠢。謝謝。把它寫成答案,我會給你信用。 – user3648646

回答

1

如角文檔所述,軌道由必須始終是最後一個表達式:

注:軌道由必須始終是最後一個表達式

我的猜測是,所有這一切都沒有考慮,所以這就是爲什麼你的過濾器不適用。移動到正確的地方的軌道應該修復它

1

是的,如上所述。最後移動track by,並使字母N小寫,如下面的演示或此fiddle

angular.module('demoApp', []) 
 
    .controller('mainController', MainController); 
 

 
function MainController($scope) { 
 
    $scope.data = [{ 
 
    name: "5 play", 
 
    type: 1 
 
    }, { 
 
    name: "one on one", 
 
    type: 2 
 
    }, { 
 
    name: "two on one", 
 
    type: 2 
 
    }]; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="demoApp" ng-controller="mainController"> 
 

 
    <select class="form-control" ng-model="selectedRule" ng-options="item as item.name for item in data | filter:{type:1} track by item.name"></select> 
 
</div>