2013-10-02 47 views
12

我一直在尋找幾個小時,我似乎無法在任何地方找到我的問題的答案。我記得之前我能夠實現它,但由於某種原因我遺失了代碼,我似乎無法記住我所做的工作。ng-options的AngularJs條件顯示

我想在使用ng選項的選擇框中顯示陣列中的數據。那一個我沒有問題。我需要實現的是隻有特定的數組值將被顯示/包含在選擇框中。

我的數據如下:

$scope.chartList = [ { "id" : 1, "name" : "chart 1", "order" : 1, "active" : false }, 
        { "id" : 2, "name" : "chart 2", "order" : 2, "active" : true }, 
        { "id" : 3, "name" : "chart 3", "order" : 3, "active" : true }, 
        { "id" : 4, "name" : "chart 4", "order" : 4, "active" : true }, 
        { "id" : 5, "name" : "chart 5", "order" : 5, "active" : true } ]; 

我的HTML看起來像:

<select ng-model="toAddChart" ng-options="chart.id as chart.name for chart in chartList | filter:chart.active=='false'"> 
    <option value=""></option> 
</select> 

所以,我希望發生的是,如果屬性的值「活動」是假的,然後這是陣列項目顯示/包含在選擇列表中的唯一時間。我嘗試過濾器屬性的不同排列,但似乎沒有任何工作。

我知道我可以很容易地在標籤中使用ng-repeat並使用ng-show,但是我記得在某處閱讀(我再也找不到它在哪裏),它不是實現它的正確方法,選項是正確的方法。

我真的很確定我能夠在沒有創建自定義JavaScript過濾器之前做到這一點,但對於我的生活,我不記得我是如何做到的。我希望有人可以

希望有人可以幫助我,因爲我沒有想法。

更新:

大斯科特,我想我已經得到了它。

相反的:

filter:chart.active=='false' 

它應該是:

filter:chart.active='false' 

它是用等號只是數量。 facepalm

感謝大家的回覆。

+0

你語法似乎完全適合我? –

+2

你的代碼似乎只能在這裏看到http://jsfiddle.net/vinodlouis/H6AZ2/1 –

+0

@VinodLouis - 哦,親愛的,它在jsfiddle上工作。現在我更加困惑,因爲它不適用於我的開發環境。謝謝!那麼我會研究其他因素。 – Stellaire

回答

17

大斯科特,我想我已經明白了。

相反的:

filter:chart.active=='false' 

它應該是:

filter:chart.active='false' 

它是用等號只是數量。 facepalm

感謝大家的回覆。

+27

誰是斯科特*? –

+0

也許發送鏈接給老闆... –

1

嘿相反其更好地利用

NG選項= 「chart.id作爲chart.name在chartList圖表|過濾器:{活躍:真正}」