javascript - AngularJS select2 不显示任何值

标签 javascript jquery angularjs

我正在按照 https://github.com/angular-ui/ui-select2 中指定的方式使用 select2

<div ng-controller="sampleController>
    <select ui-select2 ng-model="select2" data-placeholder="Pick a number">
        <option value=""></option>
        <option ng-repeat="number in range" value="{{number.value}}">{{number.text}}</option>
    </select>
</div>

但这对我不起作用。我看到下拉菜单,但没有可供选择的值。

如果我将其更改为具有如下静态列表,则它可以正常工作。

<div ng-controller="sampleController">
    <select ui-select2 ng-model="select2" data-placeholder="Pick a number">
        <option value="">value1</option>
        <option value="">value2</option>
        <option value="">value3</option>
    </select>
</div>

我在这里缺少什么?

我的模型如下

function sampleController($scope){
    $scope.select2="";
    $scope.range=[{text:"name1", value:"id1"},
        {text:"name2", value:"id2"},
        {text:"name3", value:"id3"}];

    $("#e1").select2();
}

最佳答案

我认为你必须像这样使用 $timeout :

function sampleController($scope, $timeout){
    $scope.select2="";
    $scope.range=[{text:"name1", value:"id1"},
        {text:"name2", value:"id2"},
        {text:"name3", value:"id3"}];
    $timeout(function(){
      $("#e1").select2();
    }, 0);
}
为什么?因为 $timeout 会在执行该函数之前等待 $digest (在您的情况下为 ng-repeat)结束。

您之前的代码是这样做的:

  • 渲染 HTML
  • $("#e1").select2();
  • 解释 ng-repeat

因此,您的 select2 函数会在您的 select 具有其选项元素之前执行。

查看 $timeout 文档:https://docs.angularjs.org/api/ng/service/ $超时

关于javascript - AngularJS select2 不显示任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24459437/

相关文章:

javascript - 当控件更改其位置时,zeroclipboard 胶粘在不同的坐标上

javascript - jQuery 将类添加到标签的子级以及所有标签的子级的子级

jquery - 使用 jQuery 禁用 IFRAME 内的所有链接

javascript - 如何着手创建一个在动画位置和不透明度时立即显示的工具提示?

javascript - Angularjs 1.2.9 范围隔离

javascript - 多复选框过滤器在 ng-repeat 和 AngularJS 中不起作用

javascript - 如何在现有的 angularjs 项目中使用 kendo-ui

javascript - 错误 :Property 'select' does not exist on type HTMLElement

javascript - 调整 Colorbox 大小不起作用!

javascript - 将动态加载的复选框绑定(bind)到 Angular.js 模型