我正在制作一个带有MEAN堆栈的简单在线汽车商店。 我在数据库中有一些实体,现在我正在尝试实现搜索功能。我有一个包含搜索字段的页面。在单击搜索按钮时,在控制器中调用一个函数,向发送选项对象的服务器发出post请求。服务器以正确的数据响应。这就是问题所在:搜索按钮调用搜索功能。
$scope.search = function(options) {
console.dir(options);
CarAdsService.searchByOptions(options)
.then(function(cars) {
$scope.cars = cars;
}, function(err) {
console.log(err);
})
}
和被调用的服务函数:
searchByOptions: function(options) {
var deferred = $q.defer();
$http.post('/api/searchCars', {options: options})
.success(function(cars){
// when I log cars, the data is correct
deferred.resolve(cars);
})
.error(function(err){
deferred.reject(err);
});
return deferred.promise;
然后在视图中我得到了这个:
tr(ng-repeat="car in cars")
td {{ car.brand.name }}
td {{ car.model.name }}
td {{ car.fuelType }}
td {{ car.gearBox }}
td {{ car.price | currency}}
td {{ car.year }}
位于搜索菜单的右侧,但不会更新。经过多次测试,$ scope.cars对象已正确设置,但视图未更新。我尝试调用$ scope。$ apply()但它抛出了$ digest已经运行的异常。 你能不知道如何解决这个问题?
答案 0 :(得分:0)
好吧,事实证明我是白痴(5个小时撞到墙上)
CarAdsService.searchByOptions(options)
.then(function(cars) {
$scope.cars = cars.cars;
响应是一个具有汽车属性的对象,与阵列有关。