AngularJs实现了搜索功能

时间:2015-01-28 21:10:33

标签: javascript angularjs express mean

我正在制作一个带有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已经运行的异常。 你能不知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,事实证明我是白痴(5个小时撞到墙上)

CarAdsService.searchByOptions(options)
  .then(function(cars) {
    $scope.cars = cars.cars;

响应是一个具有汽车属性的对象,与阵列有关。