2014-09-29 128 views
0

我使用https://github.com/localytics/angular-chosen创建具有默认的项目选择元件选择:角选的默认选择不工作

<select chosen="{inherit_select_classes:true}" disable-search="true" class="form-control span6" ng-model="myPick"> 
    <option value=""></option> 
    <option value="AAA">AAAAAAAAAAAAAAAA</option> 
    <option value="BBB" selected="selected">BBBBBBBBBBBBBBB</option> 
</select> 

我想BBBBBBBBBBBBBBB在默认情况下进行选择,但它不工作:

http://plnkr.co/edit/H2hmEukfjaPL1T4W298O?p=preview使用selected="selected"$scope.myPick = "BBB";也不能使其工作。你能帮助为什么吗?

如果我删除的模型,它工作得很好:

<select chosen="{inherit_select_classes:true}" disable-search="true" class="form-control span6"> 
    <option value=""></option> 
    <option value="AAA">AAAAAAAAAAAAAAAA</option> 
    <option value="BBB" selected="selected">BBBBBBBBBBBBBBB</option> 
</select> 

更新1

  • 我的项目已经有一堆模板selectoption一堆。非常耗时将它们拉进$scope.someObjectng-options

  • 最好,如果我不需要声明或初始化myPick任何地方,而是将selected放在html模板中。

+0

“选择”指令有什么作用?如果你删除'selected =“{inherit_select_classes:true}”',它就可以正常工作。 – zsong 2014-09-29 23:42:10

回答

1

除了插入通过标记的选项,你可以预定义的选项,如下所示:

$scope.options = { 
    'AAA':'AAAAAAAAAAAAAAAA', 
    'BBB':'BBBBBBBBBBBBBBB' 

} ; 
$scope.myPick = "BBBBBBBBBBBBBBB"; 

,并在您的视图:

<select chosen="{inherit_select_classes:true}" disable-search="true" class="form-control span6" ng-options="v for (k,v) in options" ng-model="myPick"> 
</select> 

你可以看到它是如何工作在这里:http://plnkr.co/edit/aOV1agWFfJZaTU675wEF?p=preview

+0

是的,我知道这会工作,但我的项目已经有一堆'

+0

你如何使用一组哈希函数来工作? – Seth 2015-06-29 07:04:30

0

您的插件“选中”会更改选择标记,因此不再选择要素NT

<div class="chosen-container chosen-container-single form-control span6 ng-pristine ng-valid localytics-chosen chosen-container-single-nosearch" style="width: 835px;" title=""> 
    <a class="chosen-single chosen-default" tabindex="-1"> 
     <span>Select an Option</span> 
     <div><b></b></div> 
    </a> 
    <div class="chosen-drop"> 
     <div class="chosen-search"> 
      <input type="text" autocomplete="off" readonly=""> 
     </div> 
     <ul class="chosen-results"> 
      <li class="active-result" style="" data-option-array-index="2">AAAAAAAAAAAAAAAA</li> 
      <li class="active-result" style="" data-option-array-index="3">BBBBBBBBBBBBBBB</li> 
     </ul> 
    </div> 
</div> 

我想你需要创建一个自定义的指令,如果你想NG-模型与您的插件(.e.g工作。 https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

+0

但是,你如何确保分配“选择”后选择被渲染虽然?这很棘手。 – 2014-09-30 20:39:20