【发布时间】:2017-07-10 19:28:29
【问题描述】:
我无法显示自动完成列表。我的服务返回 json 模型:TagID: 1, text:MyText 但自动完成列表永远不会显示。我的 HTML:
<tags-input ng-model="tags" tag-class="{even: $index % 2 == 0, odd: $index % 2 != 0}" on-tag-added="addTag(tags)"> <auto-complete source="loadTags($query)"></auto-complete> </tags-input>
我的控制器代码:
$scope.loadTags = function ($query) {
var tags;
contractorService.gettags()
.success(function (data) {
tags = data;
return tags.filter(function(tag) {
return tag.text.toLowerCase().indexOf($query.toLowerCase()) != -1
更新
我发现它只是不喜欢从 Ajax 调用返回到 MVC 控制器的 Json。
public async Task<ActionResult> GetMajorTags()
{
majorId = UserInfo.intMajorID;
var tags = await CompanyClient.GetAvailableTags(majorId);
return Json(tags, JsonRequestBehavior.AllowGet);
}
甚至绕过服务直接调用MVC控制器方法如下:
$scope.loadTags = function (query) {
return $http.get('/SSQV4/SSQV5/Contractor/GetMajorTags');
};
如果我将源设为静态,如下所示:
var auto = [
{ TagID: 4,text: 'Tag4' },
{ TagID: 5, text: 'Tag5' },
{ TagID: 6, text: 'Tag6' }
];
它可以工作,但它不会显示从 MVC 控制器返回的内容,即使返回的数据格式完全相同。
非常感谢任何帮助!
【问题讨论】:
-
为什么你的
loadTags方法中有return语句?这在服务回调的上下文中没有意义。
标签: ajax asp.net-mvc ng-tags-input