3

使用 Angular UI Select2 指令,在输入字段上定义标签。如果输入本身在自定义指令中,则它没有正确初始化并且控制台给出错误:

query function not defined for Select2 tagging

我怀疑这可能与指令的编译/链接顺序与调用 select 2 函数的顺序有关。

也许有一个简单的解决方法,也许使用编译函数或指令控制器而不是链接函数?或者可能是 Angular UI select2 指令的问题。

我做了一个显示问题的 plunker:

http://plnkr.co/edit/myE5wZ

所以我的问题是 - 你如何让 select2 标签在自定义 Angular 指令中工作?

4

5 回答 5

5

最后,我设法找到了一个我很满意的解决方案,涉及嵌套两个指令,这样逻辑就可以封装在父指令中(不会溢出到控制器中)。

我的解决方案的 Plunker 在这里供任何可能偶然发现相同问题的人使用:

http://plnkr.co/edit/ZxAPF5BzkgPtn9xddCRM

于 2013-03-28T13:10:32.290 回答
4

我今天刚刚遇到这个并总结了解决方法:

PostLinking 函数以相反的顺序执行(从最深的孙子到最大的祖父)。

将您的自定义模态代码(或任何设置 $scope 数据以供其子项使用的任何内容)放在PreLinking函数中。PreLinking函数从父级到子级,所有 PreLinking 函数都在 PostLinking 函数之前执行。

于 2013-06-15T09:31:40.583 回答
0

通过使用控制器函数而不是指令中的链接函数,它正在工作。例子:

function myFunction() { 
  var dir = {};
  dir.scope = { myModel: '=' };
  dir.restrict = 'E';
  dir.templateUrl = 'myTemplate.html';
  dir.replace = true;
  dir.controller = function ($scope) {
    $scope.myVar = ...;
  };

  return dir;
};
于 2014-08-18T09:06:02.413 回答
0

我有一个类似的问题。您的解决方案有效,但恕我直言,我认为更好的解决方案是使用控制器功能而不是指令内的链接功能。这样做你确实需要嵌套指令。

于 2013-05-18T17:16:34.730 回答
0

我也有这个错误。我的简短解决方案:

<input type="hidden" 
       name="citizenship" 
       class="form-control input-sm col-sm-10" 
       style="width:500px" 
       multiple 
       ui-select2="params.options.citizenshipOptions"   
       ng-model="cvLang.content.citizenship"
       ng-repeat="a in [1]"
 />

ng-repeat="a in [1]" 是一个神奇的东西!!!我不清楚上下文的逻辑,但这是有效的。这可能有帮助吗?

于 2014-10-11T19:38:40.167 回答