可以't读取未定义的属性长度-AngularJS

Can't read property length of undefined - AngularJS

本文关键字:属性 -AngularJS 未定义 读取 可以      更新时间:2023-09-26

我的一个变量抛出未定义的结果,导致错误:

HTML:

<form ng-submit="search()">
   <div class="input-group col-md-6 typeahead-wrapper">
        <input type="text" ng-model="searchkeyword.keystring" class="typeahead">
        <span class="input-group-btn">
           <button class="btn btn-primary" id="goSearch" type="submit">
              <span class="glyphicon glyphicon-search"></span>
           </button>
        </span>
   </div>
</form>

这是控制器内部的功能:

$scope.search = function() {
        //alert($scope.searchkeyword.keystring);
     $http.get('myurl'+$scope.searchkeyword.keystring).then(sucesscalback,errorcalback);
        function sucesscalback(response)
        {
            //some code
        }
        function errorcalback(failure)
        {
            //some code
        }

我正在尝试实现typeahead,它运行得很好,但当我在控制器内粘贴以下代码时(在搜索功能之后/之前):

$scope.substringMatcher = function(strs) {
        return function findMatches(q, cb) {
            var matches, substrRegex;
            matches = [];
            substrRegex = new RegExp(q, 'i');
            $.each(strs, function(i, str) {
                if (substrRegex.test(str)) {
                    matches.push({ value: str });
                }
            });
            cb(matches);
        };
    };
           $scope.states = ['Connecticut', 'Delaware', 'Wisconsin', 'Wyoming'];
           var myTypeahead =  $('.typeahead').typeahead({
                hint: true,
                highlight: true,
                minLength: 1,
              },
              {
                name: 'states',
                displayKey: 'value',
                source: $scope.substringMatcher($scope.states)
              });

我的密钥字符串返回未定义:

$scope.searchkeyword.keystring

substringMatcher在我看来是个问题。

谢谢你的帮助。

通过将substringMatcher封装在内部修复了问题

$.noConflict();
    jQuery( document ).ready(function( $ ) {
      // My code for substringMatcher
}

此处的来源