0

使用此代码,我总是得到TypeError: Cannot read property 'success' of undefined。我也尝试过使用 .then 而不是 .success 但我得到了同样的错误。经过十多个小时的谷歌搜索后,我有点绝望......

html:

<div ng-controller="search_interest" layout="column">
    <md-chips ng-model="ctrl.selectedVegetables" md-autocomplete-snap md-require-match>
        <md-autocomplete
            md-selected-item="selectedItem"
            md-search-text="searchText"
            md-items="item in getInterest(searchText)"
            md-item-text="item.name"
            placeholder="Search for a vegetable">
            <span md-highlight-text="searchText">{{item.name}} :: {{item.type}}</span>
        </md-autocomplete>
        <md-chip-template>
            <span>
            <strong>{{$chip.name}}</strong>
            <em>({{$chip.type}})</em>
            </span>
        </md-chip-template>
    </md-chips>
</div>

和js:

var app = angular.module('autocomplete_app', ['ngMaterial']);

app.controller('search_interest',
    function($scope, $http){
        $scope.searchText = '';
        $scope.selectedItem = undefined;
        function getInterest($scope){
            $http.get("someurl.php?query=" + $scope.searchText)
                .success(function(data){
                    $scope.interest = data;
                    console.log('data', JSON.stringify(data));
                });
        };
    });
4

3 回答 3

2

问题不是您http的电话,而是角材料导入完成的电话,正如您在波纹管图像中看到的那样,问题出在第 10 行的 angularjs-materials.js 上。

控制台图像

在此处输入图像描述

你可以看看这个版本:我在上面的评论中添加了 plunker。

我更改了一些 HTML 页面的标题。这不起作用,因为我无法调用您请求的 URL,但您的解决方案应该可以。

于 2015-07-22T16:18:58.410 回答
1

新答案

在我的查询搜索功能中

function querySearch(searchText) {
            if (!searchText || searchText.length < 3) {
                return;
            }

我应该返回一个空数组。return [];

感谢berkyl在github上回答了我的问题。

较旧的答案

在凉亭中"angular-material": "^1.0.7""angular-material": "^1.0.5"我收到了类似的错误:

angular.js:13550 TypeError:无法读取未定义的属性“then”

但是当我使用1.0.5 版的 CDN 时,它工作正常。

于 2016-04-22T08:18:52.963 回答
0

只需使用基本的自动完成

https://material.angularjs.org/latest/api/directive/mdAutocomplete

指令然后自行定制。

HTML

<md-autocomplete md-selected-item="selectedItem" md-search-text="searchText" md-items="item in querySearch(searchText)" md-item-text="item.display">
   <md-item-template>
      <span md-highlight-text="searchText">{{item.display}}</span>
   </md-item-template>
   <md-not-found>No matches found.</md-not-found>
</md-autocomplete> 

工作正常。

于 2017-06-08T05:55:54.707 回答