在amitava82 / angular-multiselect中设置选定的值

时间:2014-10-28 13:23:02

标签: angularjs multi-select

我是棱角分明的新手,我的搜索表格中需要一个多选框, 我正在使用来自amitava82的multiselect.js

但我遇到的一个问题是,当我想加载一个已保存的表单时,我无法在其中获取选定的值。

这是multiselectbox的代码

<multiselect class="input-normal" multiple="true"
ng-model="yearlist"
options="yearList.data as yearList.data for yearList in dataYearList"
change="selected()"></multiselect>

重置这个我使用这行代码

$scope.yearlist[0].checked = false;

这很好用

这是我尝试用来设置所选值的代码 但它不起作用

$scope.yearlist=[{data:2009,checked:true},{data:2011,checked:true}];

如何使用预定义的选定值加载此表单?

1 个答案:

答案 0 :(得分:0)

我不知道这是否也可以与'amitava82 / angular-multiselect'结合使用,但我所知道的是,如果数据处理是基于带有ng-options的默认多选框,那么你刚才做的一个常见的错误。

HTML for default multi select:

<select multiple ng-model="yearlist" ng-options="option.data as option.data for option in dataYearList"></select>

如果你'dataYearList'是:

$scope.dataYearList = [{"data":2014},{"data":2013},{"data":2012},{"data":2011},{"data":2010},{"data":2009}] ;

您的年份列表是:

$scope.yearlist = [{"data":2012},{"data":2011}] ;

您的选择不会在多选框中选中。 但是,如果您将“年份列表”更改为:

$scope.yearlist = [2012, 2011] ;

您的选择将被选中。

为什么呢? 因为'option.data as'指的是option.data值,例如{{data“:2012}但不是2012年。

你是否应该考虑将'option.data'替换为'option as',因为那时它将是{“data”:2012}。它不起作用。

由于某些原因,multiselect无法处理ng-model中的对象数组,或者无法处理初始选择的ng-options中'option.data as'的对象...为什么,我我不确定。

希望这也有助于您解决'amitava82 / angular-multiselect'问题。