gpt4 book ai didi

angularjs - md-autocomplete 未显示文本输入

转载 作者:行者123 更新时间:2023-12-02 11:27:24 24 4
gpt4 key购买 nike

我正在尝试在我的网站中使用 Angular Material 的自动完成组件。

在我的html代码中:

     <md-autocomplete md-selected-item="selectedItem" md-search-text="searchText" md-items="item in getMatches(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>

在我的 Controller 中我有以下内容:

app.controller('IndexController', function ($scope) {
$scope.getMatches = function (text) {
alert(text);
}
});

如你所见,我没有实现太多。但如果自动完成功能试图查找某些内容,它应该执行 getMatches 并提醒文本。

在我的场景中,welp 除了打印“未找到匹配项”之外什么也不做。

没有文本输入来输入要搜索的文本。

我错过了什么?

jsfiddle 位于 https://jsfiddle.net/p7wc8psy/

最佳答案

您制作的 DOM 是正确的。

 <md-autocomplete md-selected-item="selectedItem" md-search-text="searchText" md-items="item in getMatches(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>

但是下面显示的函数是错误的,因为它没有返回任何内容,这就是您得到“未找到匹配项”的原因。

app.controller('IndexController', function ($scope) {
$scope.getMatches = function (text) {
alert(text);//this does not return anything
}
});

现在下一个问题应该返回什么。

它应该返回一个如下所示的 JSON 数组。

[{
value: "apple",
display: "apple"
}, {
value: "banana",
display: "banana"
}, {
value: "gauva",
display: "gauva"
}, {
value: "melon",
display: "melon"
}, {
value: "potato",
display: "potato"
}, {
value: "carrot",
display: "carrot"
}, {
value: "cauliflower",
display: "cauliflower"
}, {
value: "jasmine",
display: "jasmine"
}, {
value: "cabbage",
display: "cabbage"
}, {
value: "peas",
display: "peas"
}]

JSON 中的显示键是什么

由于您在此处提到了md-item-text="item.display",因此返回的数组必须具有显示在自动完成下拉列表中的显示键。

所以我的搜索功能如下所示:

$scope.myDta = [{
value: "apple",
display: "apple"
}, {
value: "banana",
display: "banana"
}, {
value: "gauva",
display: "gauva"
}, {
value: "melon",
display: "melon"
}, {
value: "potato",
display: "potato"
}, {
value: "carrot",
display: "carrot"
}, {
value: "cauliflower",
display: "cauliflower"
}, {
value: "jasmine",
display: "jasmine"
}, {
value: "cabbage",
display: "cabbage"
}, {
value: "peas",
display: "peas"
}];
$scope.getMatches = function (text) {
text = text.toLowerCase();
var ret = $scope.myDta.filter(function (d) {
//return element which starts with entered text
return d.display.startsWith(text);
});
return ret;
}

工作代码here

测试用例:类型ca

希望这有帮助!

关于angularjs - md-autocomplete 未显示文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33931726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com