2017-04-19 129 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

相关问题