我正在尝试使用我自己的指令包装AngularUI的typeahead directive,以便我可以打包一些共享数据/行为,以便在我的应用中更容易重用:Plunker
在onSelect
回调中,为什么正确的值仅在超时后显示?
作为参考,这可以在没有包装指令的情况下正常工作:Plunker
答案 0 :(得分:0)
答案 1 :(得分:0)
您必须在指令中使用&符号并传递html中的项目。从Angular Docs“& binding允许指令在特定时间触发对原始范围上下文中的表达式的求值。允许任何合法表达式,包括包含函数调用的表达式。对此,& bindings非常适合将回调函数绑定到指令行为。“
指令中的隔离范围:
scope: {
onSelect: '&'
}
<强> HTML 强>
<input autocomplete="off"
placeholder="Enter “jo” and pick something"
ng-model="selectedModel"
typeahead="v as v.name for v in vendors | filter:$viewValue"
typeahead-on-select="onSelect({item: $item})" />
回调函数应该带一个项目
function myCallback(item) {
console.log(item);
}