2017-04-19 71 views
0

Plunker to try我正在使用oi-select庫來選擇多個選項,我希望數據的第一個值在數據可用時應該默認選擇。 HTML代碼如何在oi-select angularjs中選擇第一個選項

<oi-select multiple ng-init="selectedNewRelease=releaseList[0]" 
oi-options="item.releaseId for item in releaseList" ng-model="selectedNewRelease" 
placeholder="Select Releases" 
oi-select-options="{dropdownFilter: 'myDropdownFilter'}" id="selectedReleases" 
ng-change="onReleaseChange();toggleCol();"></oi-select> 

我試着用NG-INIT,通過如下分配:

$scope.selectedNewRelease=$scope.releaseList[0]; 

這實際上工作,但只要我選擇一個或多個選項,它會刪除默認選中的選項。任何想法的任何鏈接,請。鏈接oi-select

回答

2

當使用Object not Array設置oi-select(多個)的默認值時,選擇新項目將導致覆蓋原始值。 所以,你應該用Array .Something這樣初始化它:

ng-init="selectedNewRelease=[releaseList[0]] 

請參閱本plunker


UPDATE:

oi-select用於ngModel實現two-way-databinding,並且由於角如果數組的instance不改變將不會觸發變化(指納克變化將不會觸發無實例改變)。

所以後推新的項目,你應該做這樣的事情:

$scope.selectedNewRelease = $scope.selectedNewRelease.slice(); // create new instance for the array. 
+0

是啊我嘗試將第一個記錄推到$ scope.selectedNewReleases.push(releaseList [0]),但它沒有顯示選中,當我選擇第二個值時,它顯示第一個和第二個。 – Sudarshan

+0

@Sudarshan你什麼時候推第一個項目?如果在異步回調中,也許你應該考慮調用'$ scope。$ apply'。 – Pengyy

+0

http://plnkr.co/edit/mwNkSCBCrz3zXXbdJK8o?p=preview這是我的實時小提琴。我試過scope.apply也在這裏檢查 – Sudarshan

0

試試這個

ng-init="selectedNewRelease=releaseList[0]"而不是ng-init="releaseList[0]"

編輯:

或刪除OI-選擇ng-init="selectedNewRelease=releaseList[0]"和控制器負載後分配值releaseList數據

function controller($scope) 
{ 
Loaddropdown() 
{ 
$http().success(function(data){ 
$scope.releaseList = data; 
$scope.selectedNewRelease =$scope.releaseList[0]//or $scope.selectedNewRelease=$scope.releaseList[0].Id// which id means what's your value 
}) 
} 
} 
+0

是的,我已經試過了錯,我忘了編輯正確的方式,但沒有運氣對不起,好像OI-選擇不會支持NG -init only – Sudarshan

+0

我有更新我的答案 –

+0

我也試過這個,我在我的問題中提到請看,它的工作原理,但是當我選擇任何其他選項時,選定的值將消失。請閱讀我的問題,我也不能從我的控制器分配,因爲我需要selectedNewReleases迭代以查看選擇了多少個選項。如果我指定,則每次調用時其長度將始終爲0。 – Sudarshan

相關問題