Angularjs ui-select2 formatSelection格式指令

时间:2014-07-16 09:38:42

标签: angularjs angularjs-directive ui-select2

我使用ui-select2添加多个项目(标记模式)。当添加一个项目时我想在输入里面显示一些特殊的ui,所以我想添加一些指令。 尝试使用formatSelection格式化输入:

function colorFormat(state) {
   return '<color-selection selections="option.selections"></color-selection>';
}

但该指令未编译。所以我编译了它:

function colorFormat(state) {
  return $compile('<color-selection selections="option.selections"></color-selection>')(scope);
}

但现在,值为[&#39;对象对象&#39;]。似乎格式化了我的结果。那么如何格式化指令?

2 个答案:

答案 0 :(得分:0)

formatSelection期望返回html,$ compile服务将返回对象。 在我看来,你需要编译元素并获取html字符串。

试试这个。

  var compiledHTML = $compile('<color-selection selections="option.selections"></color-selection>')(scope);
    $timeout(function(){

        var formatString = '';
        for(i=0; i<compiledHTML.length; i++)
            formatString += compiledHTML[i].outerHTML;

        return formatString ;
    },0);

此外,如果它不起作用,最好是你可以创建一个小的plunkr或小提琴,它可以帮助调试。

答案 1 :(得分:0)

好的,所以formatSelection os不要期待html,而是jqlite / angular对象。但它将其转换为字符串。所以一个解决方案是删除转换并只是附加给定的元素。 另一个解决方案是使用容器元素作为第二个参数调用formatSelection:

formatSelection(state, container) {
  container.append($compile('bla')(scope));
}

不要退货,只需追加你的结果。