如何在 oi-select angularjs 中保留第一个选项 selected

How to keep first option selected in oi-select angularjs

Plunker to try 我正在使用 oi-select 库来 select 多个选项,我希望数据中的第一个值应该默认 selected,尽快因为数据可用。 html代码

<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];

这确实有效,但一旦我 select 一个或多个选项,它就会删除默认的 selected 选项。请有任何想法link。 link 对于 oi-select

试试这个

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

编辑:

或删除 oi-select 上的 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  
})
}
}

当使用对象而非数组为 oi-select(多个)设置默认值时,选择新项目将导致覆盖原始值。 所以你应该用 Array 初始化它。像这样:

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

参考这个 plunker.


更新:

oi-selectngModel实现了two-way-databinding,由于数组instance不改变,angular不会触发改变(意味着 ng-change 不会在没有实例更改的情况下触发。

所以推送新项目后,你应该做这样的事情:

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