【问题标题】:AngularUI select2 AJAX set via modelAngularUI select2 AJAX 通过模型设置
【发布时间】:2012-12-20 20:37:15
【问题描述】:

我正在使用 AngularUI 的 ui-select2 指令和 AJAX。

以下是我的看法:

<label>Group: <input ng-model="group" ui-select2="select2GroupConfig"></label>

这是我的模型中的内容:

$scope.select2GroupConfig = {
    ajax: {
        url: 'theURL',
        data: function (term, page)
        {
            return { q: term };
        },
        results: function (data, page)
        {
            return { results: data };
        }
    }
};

这按预期工作。


我的问题:如何通过模型更新值?

我试过了:

$scope.group = 'some group';

我也尝试过使用对象:

$scope.group = { id: 32, text: 'some group'};

但这也不管用。

如何通过模型更新使用 AJAX 的 select2?

【问题讨论】:

    标签: javascript jquery angularjs jquery-select2 angular-ui


    【解决方案1】:

    原来你可以将它设置为一个对象,但只能在 ui-select2 运行之后;我试图给它一个初始值。

    所以,你必须使用select2initSelection函数,而不是使用常规模型:

    $scope.group = 'Dummy Content';
    
    $scope.select2GroupConfig.initSelection = function ( el, fn ) {
        fn({ id: 2, text: 'Some group' });
    }
    

    注意你必须给输入一个初始值,否则initSelection 永远不会被调用。这就是为什么我只是将其设置为一些虚拟内容。


    这行得通,但感觉就像是 hack。

    有人有更好的想法吗?

    【讨论】:

    • “注意你必须给输入一个初始值”我在很多地方都看到过这个评论,但是如何提供一个初始值。我尝试通过 ng-model 设置它,但这似乎不会触发 initSelection
    【解决方案2】:

    如果您有 initSelection 设置,您可以只传递 ID,指令将拉起整个行对象。

    这也将允许您在页面加载时也将值设置为 ID。

    如果您不想使用initSelection,您可以将整行(对象)设置为值,select2 将相应更新。然而,这一切都取决于您的用例。

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 2023-04-05
      • 2013-04-12
      • 1970-01-01
      • 2023-03-10
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多