2016-01-22 27 views
1

我有這樣的HTML代碼:角度濾波 - 與controllerAs語法不工作

<md-list> 
    <md-list-item ng-repeat="schema in dash.filteredSchemas = (dash.items | filter: {name: dash.schemaListFilter}) | orderBy: 'schema.id'"> 
    <h4>{{ ::schema.name }}</h4> 
    </md-list-item> 
</md-list> 
<div ng-show="dash.filteredSchemas.length">Empty</div> 

的問題是,使用此語法時,我沒有看到任何結果 - 在10個結果,如果要在過濾器中顯示沒有填充。

注意:沒有控制檯錯誤。更改爲:

<md-list> 
    <md-list-item ng-repeat="schema in dash.items | filter: {name: dash.schemaListFilter} | orderBy: 'schema.id'"> 
    <h4>{{ ::schema.name }}</h4> 
    </md-list-item> 
</md-list> 
<div ng-show="dash.filteredSchemas.length">Empty</div> 

節目的結果,但(顯然)未示出過濾器施加當空消息並且沒有結果匹配。

這是什麼問題?!

+0

你怎麼在第二個例子中設置dash.filteredSchemas? –

+0

我不,它不工作 – vlio20

回答

1

如果你想獲得過濾的結果,但不想打破原有陣列可以使用'as'操作ng-repeat ...

<md-list> 
    <md-list-item ng-repeat="schema in dash.items | filter: {name: dash.schemaListFilter} | orderBy: 'schema.id' as filteredData"> 
    <h4>{{ ::schema.name }}</h4> 
    </md-list-item> 
</md-list> 
<div ng-show="filteredData.length">Empty</div> 

所以每當你改變你的過濾器的查詢結果將被設置爲「 filteredData'所以你可以使用這個數組屬性來實現你想要的東西...

+0

謝謝,但我怎麼能過濾數據別名到我的控制器?這意味着我可以在'dash.filteredData'等其他地方使用它? – vlio20

+0

如果你真的想把它設置在你的虛擬機別名上,你可以看到它的值,因爲它是範圍的元素。 –