我有以下功能来渲染组合框中可用的选项:
var optionsListElement = element.find('div.combobox-list'),
itemsElement = optionsListElement.find('ul.items-list');
function renderOptions(items) {
var parentElement = itemsElement.parent();
if (!items || items.length == 0) {
itemsElement = itemsElement.append($(
'<li class="no-bullet">No Option Available</li>'));
} else {
if (!scope.hasColumns) {
items.forEach(function (item, i) {
innerScope = createInnerScope({
item: item,
$first: i == 0,
$index: i,
$even: i % 2 == 0,
$odd: i % 2 != 0,
$last: i == item.length - 1
});
transclude(innerScope, function (rowTemplate, transcludeScope) {
// If there is not transclude rowTemplate, use default
if (rowTemplate.length == 0 || rowTemplate.length == 1 && rowTemplate[0].nodeType == 3 && rowTemplate[0]) {
rowTemplate = angular.element(
'<span title="{{ getText(item) }}" \
>{{ getText(item) }}\
</span>');
}
itemsElement.append(
$compile(angular.element(
'<li ng-click="focusAndSelectOption(item)"\
ng-class-even="\'even\'" ng-class-odd="\'odd\'"\
ng-class="{ selected: isSelected(item), focused: isFocused($index) }">\
</li>').append(rowTemplate))(transcludeScope)
);
});
});
}
}
parentElement.append(itemsElement);
}
对于第一个调用(没有items
),该函数按预期工作,并将li
与文本No Option Available
绑定到itemsElement
。 parentElement
似乎保留了要追加的正确目标div
。但在任何后续调用中,parent()
都会返回null
,而parentElement
无法附加选项。
使用此功能的div
结构如下所示:
<div class="combobox-list" style="visibility:hidden" >
<ul class="items-list" ></ul>
</div>
我只是想将li
项绑定到ul
,并且很少有属性指令绑定到ul
所以我必须将其保留在代码之外。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
问题是另一个清理所有ul元素的功能。所以这变得无关紧要