Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript md autocomplete返回TypeError:无法读取属性';然后';未定义的_Javascript_Angularjs_Autocomplete_Angular Material_Md Autocomplete - Fatal编程技术网

Javascript md autocomplete返回TypeError:无法读取属性';然后';未定义的

Javascript md autocomplete返回TypeError:无法读取属性';然后';未定义的,javascript,angularjs,autocomplete,angular-material,md-autocomplete,Javascript,Angularjs,Autocomplete,Angular Material,Md Autocomplete,使用md autocomplete来自angular material的组件,我遇到了一个问题: {{item.title} 每个{{form.detailModel.aspectName}没有结果 这是我的控制器中的函数 $scope.searchAspect=函数(searchStr){ 如果(!searchStr){ var=“编码”; }否则{ var searchStr=escape(searchStr); } var url=“/api/url&searchTxt=“+searc

使用
md autocomplete
来自
angular material
的组件,我遇到了一个问题:


{{item.title}
每个{{form.detailModel.aspectName}没有结果
这是我的控制器中的函数

$scope.searchAspect=函数(searchStr){
如果(!searchStr){
var=“编码”;
}否则{
var searchStr=escape(searchStr);
}
var url=“/api/url&searchTxt=“+searchTxt”;
$http({
url:url,
方法:“获取”
}).success(函数(数据、状态、标题、配置){
$scope.pickerResult=data.data;
});
};
如果我输入什么,我就会得到数据。但在输入中出现模糊时,我得到了以下错误:
TypeError:无法读取未定义的属性“then”,并且无法取回数据。我试图以这种方式更改md items指令

md-items="item in searchItem(searchTxt)"
我没有收到错误,但即使http调用成功,自动完成也不会显示任何结果。有什么想法吗

言而有信

$scope.searchAspect = function(searchStr) {
        if(!searchStr) {
            var searchStrEncoded = "";
        } else {
            var searchStrEncoded = escape(searchStr);
        }
        var deferred = $q.defer();
        var url = "/api/url&searchTxt=" + searchStrEncoded;
        $http({
            url: url,
            method: 'GET'
        }).success(function (data, status, headers, config) {
            deferred.resolve(data.data);
            $scope.pickerResult = data.data;
        }).error(deferred.reject);
        return deferred.promise;
    };
同样的错误

试试这个

<md-autocomplete
        required
        md-search-text="searchTxt.val"
        md-items="item in searchAspect(searchTxt)"
        md-item-text="item.name"
        md-min-length="0"
        md-delay="100"
        placeholder="Search...">
    <md-item-template>
        <span md-highlight-text="searchTxt" md-highlight-flags="^i">{{item.title}}</span>
    </md-item-template>
    <md-not-found>
       No results <span data-ng-if="form.detailModel.aspectName != null">per</span> {{form.detailModel.aspectName}}
    </md-not-found>
</md-autocomplete>

$scope.searchAspect = function(searchStr) {
    if(!searchStr.val) {
        var searchStrEncoded = "";
    } else {
        var searchStrEncoded = escape(searchStr);
    }
    var url = "/api/url&searchTxt=" + searchStrEncoded;
    return $http({
        url: url,
        method: 'GET'
    }).then(function (data) {
        return data.data;
    });
};

{{item.title}
每个{{form.detailModel.aspectName}没有结果
$scope.searchAspect=函数(searchStr){
如果(!searchStr.val){
var=“编码”;
}否则{
var searchStr=escape(searchStr);
}
var url=“/api/url&searchTxt=“+searchTxt”;
返回$http({
url:url,
方法:“获取”
}).then(功能(数据){
返回数据.data;
});
};

据我所知,md items attributes需要一个承诺,而您正在提供一个数组。

您试图在其他地方解析一个
promise
,我指的是您尚未发布的代码。这是此处的典型错误…它表示您尝试访问当时未定义的对象的
then
属性尝试查看我的编辑我们还需要查看调用
.then()
方法的位置我没有.then()方法。这里有一个异步的例子。。。为什么你不想尝试?需要帮助吗