【发布时间】:2017-04-12 07:42:18
【问题描述】:
在我的 angular-rails 应用程序中,我试图实现一个非常基本的实时数据库搜索,这样在 keyup 上,结果数组会随着输入值的变化而填充或取消填充。目前数据库表中大约有 400 种产品,但未来可能会更多。这是我的代码:
在 Rails 端,产品控制器内部:
def index
@products = Product.search(params[:search]);
render json: @products
end
还有我的 product.rb 文件:
def self.search(search)
where("name iLIKE ?", "%#{search}%")
end
在角度方面,在相关控制器内部:
function MainController(dataService) {
var ctrl = this
ctrl.searchResultsArray = [];
ctrl.populateArray = function(search) {
dataService.getProductSummaries(search)
.then(function(response){
ctrl.searchResultsArray = response.data
})
};
};
在我的数据服务中:
function dataService($http) {
var ctrl = this
ctrl.getProductSummaries = function(search) {
return $http({
method: 'GET',
url: '/products',
params: { search: search }
});
};
};
在我的角度视图内(由MainController as ctrl 控制):
<input ng-keyup="ctrl.populateArray(ctrl.result)" ng-model="ctrl.result" />
<div ng-repeat="result in ctrl.searchResultsArray">
<li>
{{ result.name }} costs {{ result.price }}
</li>
</div>
上面的代码大部分都可以,但是输入太快会导致它短路,而且我偶尔会在我的开发控制台中看到错误,所以肯定是坏了。它遗漏了什么或做错了什么?
【问题讨论】:
标签: ruby-on-rails angularjs autocomplete