将 ui-select 与 Angularjs 和 ajax 值一起使用

Use of ui-select with Angularjs and ajax values

我正在尝试将 从 Select2 v4 转换为 ui-select angularjs 包装器。 我通过 ajax 调用填充值:

$http({
        method: 'GET',
        url: 'roles'
    }).then(function successCallback(response) {
        $scope.roles = response.data.result;
        // this callback will be called asynchronously
        // when the response is available
    }, function errorCallback(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });

我想用 select2 主题显示角色名称并保存到我的表单变量角色 ID 中。对于 Select2,我使用了这段代码:

<select class="form-control select2"
    style="width: 100%;" name="role" data-ng-model="newUser.role"
    data-ng-options="role.idRole as role.role for role in roles track by role.role"
    required>
</select>

但它没有占位符、默认值和允许清除。所以我设置 ui-select:

<ui-select style="width: 100%;" theme="select2" data-ng-model="newUser.role"> 
    <ui-select-match placeholder="Select role"> <span data-ng-bind="role.role"></span> </ui-select-match> <ui-select-choices
        repeat="role in (roles | filter: $select.search) track by role.role">
    <span data-ng-bind="role.role"></span> </ui-select-choices> 
</ui-select>

但它不起作用,我只看到空的 select,没有找到任何元素。但奇怪的是,对于 bootstrap 主题,如果我看不到 I select,我也会看到价值。 你能帮帮我吗?

更新 使用 select2 v3.4.5(我使用的是 4)它与 bootstrap 主题有相同的问题。

我切换到 bootstrap 并且我使用了这个代码:

<ui-select theme="bootstrap" style="width: 100%;"
    data-ng-model="newUser.role" required> 
    <ui-select-match placeholder="Select role">
       {{$select.selected.role}}
    </ui-select-match> 
    <ui-select-choices
       repeat="role.idRole as role in (roles | filter: $select.search) track by role.role">
       <span data-ng-bind="role.role"></span>
    </ui-select-choices>
</ui-select>

我可以在 ui-select-match

中添加 allow-clear = true