Ajax 向范围变量添加数据后(在“查看”页面上)不会更新范围变量

Ajax 向范围变量添加数据后(在“查看”页面上)不会更新范围变量,ajax,angularjs,angularjs-scope,angularjs-ng-repeat,Ajax,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我正在用JS建造一个购物车。它的工作原理类似于用户单击项函数addToCart将其添加到数据库中 然后在te页面上我有一个购物车,它显示购物车的内容。因此,在addToCart方法中,我更新了购物车。。并希望显示数据 奇怪的是,$scope.cart显示控制台中的所有对象。。。所以一切都很好。。。但是在视图页面上,{{cart}}var只显示[],它不会被更新。。。通常,每个var都会自动更新,但由于某些原因,此var不会: 控制器(精简) c2App.controller('MakeOrder

我正在用JS建造一个购物车。它的工作原理类似于用户单击项函数addToCart将其添加到数据库中

然后在te页面上我有一个购物车,它显示购物车的内容。因此,在addToCart方法中,我更新了购物车。。并希望显示数据

奇怪的是,$scope.cart显示控制台中的所有对象。。。所以一切都很好。。。但是在视图页面上,{{cart}}var只显示[],它不会被更新。。。通常,每个var都会自动更新,但由于某些原因,此var不会:

控制器(精简)

c2App.controller('MakeOrderController',函数($scope、$rootScope、$http、$location、$routeParams、ShareData、ngDialog){
//这里有更多的CVAR…但这些并不重要
$scope.cart=[];
$scope.addToCart=函数(){
$http({
url:“http://localhost/c2api/addtocart",
方法:“POST”,
数据:
{
“sessionid”:$rootScope.sessionid,
“menuId”:$scope.menuId,
“catId”:$scope.catId,
“resId”:$scope.resId,
'singleCat':$scope.singleCat,
“multiCat”:$scope.multiCat,
“singleMenu”:$scope.singleMenu,
“多菜单”:$scope.multiMenu,
“数量”:$scope.qty
},
标题:{'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'}
}).成功(功能(数据){
//更新购物车
$scope.getCart($rootScope.sessionid,$scope.resid);
}).error(函数(err){“err”,console.log(err)});
};
$scope.getCart=函数(ses,resid){
如果(!angular.isUndefined(ses)&&!angular.isUndefined(resid)){
$http({
url:“http://localhost/c2api/getcart",
方法:“GET”,
参数:{resId:resId,ses:ses},
标题:{'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'}
}).成功(功能(数据){
//设置购物车数据
$scope.cart=数据;

console.log($scope.cart);//奇怪的是,您是否尝试过$apply?$apply强制更新

scope.$apply(function (){
    $scope.cart = data;
});
从更大的角度来看:

    }).success(function(data){

      //SET CART DATA
      $scope.cart = data;

      console.log($scope.cart);// <--- THIS SHOWS ALL DATA!

      $scope.$apply(function (){
          $scope.cart = data;
      });

    }).error(function(err){"ERR", console.log(err)});
})。成功(函数(数据){
//设置购物车数据
$scope.cart=数据;

console.log($scope.cart);//尝试在推送数据后重新加载DOM

$scope.cart.push(data);
$route.reload();

问题是视图上的
{{cart}}
位于单独的作用域中。请检查作用域继承以了解此现象。若要防止视图的作用域与控制器的作用域混淆,请将控制器用作语法(首选)或在控制器上进一步定义
$scope.cart


i、 e.在控制器和
{{order.cart}中使用
$scope.order.cart
在视图上。

您是否在html上添加了ng app和ng controller指令?是的。请注意,如果我更改$scope.cart var的内容,它将显示在视图页面上……如果未声明控制器和应用程序,则此操作将不起作用。添加后,它将返回以下错误:错误:[$rootScope:inprog]错误(本机))…和更多但是我做了$scope.$apply(函数(){…scope不工作(ReferenceError:scope未定义)我的错误是,作用域前面缺少$。$applydo您是否有子控制器或某种嵌套代码?已经这样做了…不起作用…数据被推送,、日志显示数据..但视图上的var不更新能否使用JSFIDLE显示完整代码?HTML和JS。让我们来看看。
    }).success(function(data){

      //SET CART DATA
      $scope.cart = data;

      console.log($scope.cart);// <--- THIS SHOWS ALL DATA!

      $scope.$apply(function (){
          $scope.cart = data;
      });

    }).error(function(err){"ERR", console.log(err)});
$scope.cart.push(data);
$route.reload();