10

我正在尝试以编程方式更新 select2 模型并刷新视图,但它似乎不起作用。

这是一个来自 Angular UI 项目的示例 plunker:http ://plnkr.co/edit/kQROgr?p=preview

我尝试根据 select2 文档( http://ivaynberg.github.com/select2/ “对外部值更改做出反应”)添加 initSelection( ),但这没有用。我也尝试使用 select2 3.3.2,但也没有解决。

有两个问题: 1)单击“更新模型”,模型更新,但它没有为 select2 小部件添加标签。另外2)点击“Update-Model”,然后使用select2选择第二个标签,“Update-Model”添加的第一个标签消失。

4

1 回答 1

0

我知道这个问题有点老了,但是嘿......我找到了它但不知道答案。

我设法通过设置模型然后在 select2Options 配置上调用 initSelection() 来做我想做的事

所以我的配置是这样的:

$scope.select2Options = {
allowClear: true
minimumInputLength: 3
quietMillis: 1000
initSelection: ->
  $scope.property
query: (query)->
  Properties.query({q: query.term}, (response)->
    data = {results: processData(response['properties'])}
    query.callback(data)
    )

  processData = (data)->
    results = []
    angular.forEach(data, (item, index)->
      results.push(item)
      )
    return results

}

然后我让我的模态返回新创建的对象,如下所示:

modalInstance.result.then((result)->
    $scope.property = result
    $scope.select2Options.initSelection()
  )

基本上,一旦它更新了模型,我就必须手动重新初始化 select2 小部件。我认为这可以通过 $scope.$watch 来处理,如果你真的想要的话,但这可能是一种浪费,除非你有从几个地方或其他地方更新的属性。

于 2014-05-15T19:57:15.157 回答