小编Nat*_*ndy的帖子

如何将选项更改传递给Angular-UI ui-select2?

angular-ui的ui-select2文档显示您可以执行以下操作:

myAppModule.controller('MyController', function($scope) {
    $scope.select2Options = {
        allowClear:true
    };
});
Run Code Online (Sandbox Code Playgroud)
<select ui-select2="select2Options" ng-model="select2">
    <option value="one">First</option>
    <option value="two">Second</option>
    <option value="three">Third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

但是,在该点之后对$ scope.select2Options的更改不执行任何操作.如果ui-select2在这种情况下会观察select2Options的变化,并在它们发生变化时将它们发送给select2,那就太好了.

我需要根据所选内容动态更改maximumSelectionSize,并且执行类似下面的操作显然是错误的,因为您不应该在控制器中弄乱DOM.

<select id="mySelect2" ui-select2="{ allowClear: true}" ng-model="select2" ng-change="selectChange()">
    <option value="one">First</option>
    <option value="two">Second</option>
    <option value="three">Third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

内部控制器:

$scope.selectChange = function() {
    if(...) {
        $("#mySelect2").select2({ maximumSelectionSize: 1 });
    } else {
        $("#mySelect2").select2({ maximumSelectionSize: 0 });
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在不使用DOM并在控制器中混合关注点的情况下将这些类型的选项传递给select2?(我无法通过指令想出一个干净的方法.)

谢谢!

更新:

基于/sf/answers/1187357461/,Stewie的回答,以及我自己的测试,我将以下代码添加到angular-ui ui-select的链接方法:

try {
    scope.uiSelect2 = angular.fromJson(attrs.uiSelect2);
} catch(e) {
    scope.$watch(attrs.uiSelect2, function (opts) {
        if (!opts) …
Run Code Online (Sandbox Code Playgroud)

angularjs jquery-select2 angular-ui

1
推荐指数
1
解决办法
9145
查看次数

标签 统计

angular-ui ×1

angularjs ×1

jquery-select2 ×1