这是我的问题的想法:
想象一下,我有一位用户正在寻找一本书。
作为输入,他可以尝试使用书名找到这本书。
我们来看看:
$scope.books = ["Heir Of Earth",
"Woman Of The Solstice",
"Hunters Of Next Year",
"Pilots Without Honor",
"Slaves And A Woman",
"Kings And Heroes",
"Decay Of The End",
"Fortune Of The Land",
"Rejecting My Dreams",
"Painting The Angels"];
现在我用字符串中的用户查询:
示例:
$scope.userQueryTitle = "Woman Of";
我希望得到所有书籍,其中包含“女人”或“女人”,但不包括“女人”和“女人”。
从那里,相应的结果应该是:
$scope.booksResult = ["Heir Of Earth",
"Woman Of The Solstice",
"Hunters Of Next Year",
"Slaves And A Woman",
"Decay Of The End",
"Fortune Of The Land"
];
我找到了一些问题的部分解决方案,比如:
查看:
<ul ng-repeat="book in booksResult | filter: getBooksFromTitle">
<li>{{book}}</li>
</ul>
控制器:
$scope.getBooksFromTitle = function(book){
return book.match(($scope.userQueryTitle).split(" ")[0]) ||
book.match(($scope.userQueryTitle).split(" ")[1]);
};
只有在$scope.userQueryTitle
只包含2个单词但我的问题如果我有 1 或 4 或 n 字样?
getBooksFromTitle()
应该对此有所灵活,但我不知道如何处理......
有什么建议吗?
谢谢!
答案 0 :(得分:2)
这将为你做到:
$scope.getBooksFromTitle = function(book){
var queryWords = $scope.userQueryTitle.split(" ");
for(var i=0;i<queryWords.length;i++){
return book.match(queryWords[i]);
}
};
答案 1 :(得分:0)
更改getBooksFromTitle函数,如下所示,
$scope.getBooksFromTitle = function(book){
return $scope.books.filter(function(e){ return e.match(new RegExp($scope.query.split(" ").join('|'),'i')) });
};
尝试添加所需的关键字,这可以解决您的问题。干杯