我使用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;]。似乎格式化了我的结果。那么如何格式化指令?
答案 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));
}
不要退货,只需追加你的结果。