2014-09-19 41 views
0

我需要類似這樣的:http://jsfiddle.net/PR6FM/,但以角度方式完成。 問題是,林伍重複創建選擇,它看起來像這樣:AngularJS - 從同一來源級聯選擇

<div ng-repeat="newCar in myCars"> 
     <select ng-model="newCar.carId" ng-options="car.carId as car.name for car in cars | filter: {'carId': '!'+myCars[$index-1].carId}"></select> 
    </div> 
    <button type="button" ng-click="myCars.push({'carId':myCars.length+1, 'name': "someName"})">ADD</button> 

的一點是過濾/從已經選擇的新的選擇框添加車源中刪除。

我知道,過濾器:

filter: {'carId': '!'+myCars[$index-1].carId} 

是不是要走的路,但它是一個不錯的領先優勢。

+0

也許你應該爲你的選擇選項使用'ngRepeat',然後相應地使用'ngHide'。你能提供一個小提琴或你的設置的沉重? – 2014-09-19 07:39:30

回答

1

看一看這個小提琴:http://jsfiddle.net/jarydcarolin/aLyzn30m/1/

$scope.carArray = function (index) { 
    var cars = ['Renault', 'Holden', 'Ford','Dodge']; 
    return cars.filter(function (el) { 
     return ($scope.resultArray.map(function(e){return e.car}).slice(0,index).indexOf(el) === -1) 
    }) 
} 

這裏的概念是先設置你真正想要多少瀑布,它是可能的,可能是它的獨立於您從中選擇的實際選項數組。我將它們設置爲空對象,以便通過ng-repeat獲得良好的綁定,這是我們無法用普通數組獲得的。

然後通過使用函數返回給定該級聯中該SELECT索引的數組,使每個選項列表動態化。此解決方案將邏輯放在子範圍之外,因此行爲是一致的。

-1

嘗試使用

<div ng-repeat="newCar in myCars | -carId">