我正在尝试在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

09-25 19:15