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()方法。这里有一个异步的例子。。。为什么你不想尝试?需要帮助吗