我试图在新指令中实现Bootstrap Typeahed的一些自定义函数。 这样做,我需要将原始的Typeahed指令嵌入到我的传递中,传递它,我的参数:
这是最初的指令:
<div class="typeahead typeahead-lookup">
<input ng-model="vm.myModel"
uib-typeahead="item as item.Formatted for item in vm.refreshSearch($viewValue)"
typeahead-wait-ms="1000"
typeahead-min-length="1"
typeahead-editable="false"
placeholder="SEARCH..."
type="text"
class="form-control">
</div>
这是我的自定义指令:
<select-lookup model="vm.myModel"
items="item as item.Formatted for item in vm.refreshSearch($viewValue)"
</select-lookup>
这就是我尝试实现它的方式:
function selectLookup($compile) {
return {
restrict: 'E',
scope: {
model: "=",
items: "@"
},
compile: function(element, attrs) {
return function(scope, element, attrs) {
var template = '<div class="typeahead typeahead-lookup">' +
'<input ng-model="model"' +
'uib-typeahead="{{items}}"' +
'typeahead-wait-ms="1000"' +
'typeahead-min-length="1"' +
'typeahead-editable="false"' +
'placeholder="SEARCH..."' +
'type="text"' +
'class="form-control">' +
'</div>';
element.html(template);
$compile(element.contents())(scope);
};
}
};
}
我在将指令中的参数传递给原始的Typeahead指令时遇到了问题,尤其是&#34; items&#34;。
我收到此错误:Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "{{items}}"
。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
我会尝试'uib-typeahead=' + attrs.items +
而不是'uib-typeahead="{{items}}"'
Typeahead正在使用自定义解析器来实现&#39;句法。 https://github.com/angular-ui/bootstrap/blob/master/src/typeahead/typeahead.js#L7