我正在尝试在AngularJs中创建一个自定义指令,该指令需要uibTypeahead,但无法使其正常工作。我正在使用Angular 1.5版本和angular-ui-bootstrap版本0.14.3。以下是我的示例代码-
function typeaheadOpenOnFocus($log) {
return {
require: ['uibTypeahead', 'ngModel'],
link: function (scope, element, attr, ctrls) {
element.bind('focus', function () {
$log.log("in typeaheadOpenOnFocus: ", ctrls);
// ctrls[0].getMatchesAsync(ctrls[1].$viewValue);
scope.$apply();
});
}
};
}
我期望ctrls [0]是UibTypeaheadController,因为ctrls [1]正确解析为NgModelController。基本上,我想在链接函数中使用UibTypeaheadController的getMatchesAsync函数。任何帮助将不胜感激。
谢谢。
最佳答案
看来getMatchesAsync
方法是 Controller 中的私有(private)函数。
通过查看源代码https://github.com/angular-ui/bootstrap/blob/master/src/typeahead/typeahead.js,您可以看到它们仅公开了this.init = function(_modelCtrl, _ngModelOptions)
方法。所有其他方法都在 Controller 内部。
我有一个类似的问题,我想在指令中也要调用该方法:Open AngularUI Bootstrap Typeahead Matches Results via Controller