Javascript 角度对象如何获取另一个对象的值

Javascript 角度对象如何获取另一个对象的值,javascript,arrays,angularjs,object,angularjs-scope,Javascript,Arrays,Angularjs,Object,Angularjs Scope,如何使对象继承其他对象的所有属性 代码如下: this.makeReady = function(order) { var tempOrder = angular.copy(order); tempOrder.status = 1; angular.forEach(tempOrder.items, function(item){ item.status = 1; }) return $http.put('/rest/change/invoi

如何使对象继承其他对象的所有属性

代码如下:

this.makeReady = function(order) {
    var tempOrder = angular.copy(order);
    tempOrder.status = 1;
    angular.forEach(tempOrder.items, function(item){
        item.status = 1;
    })
    return $http.put('/rest/change/invoice/'+order.id+'/', tempOrder).success(function(){
        order = tempOrder; // this doesn't work
    });
}
如果成功:更改该对象的值。

使用此选项

this.makeReady = function(order) {
    var tempOrder = angular.copy(order);
    tempOrder.status = 1;
    angular.forEach(tempOrder.items, function(item){
        item.status = 1;
    })
    $http.put('/rest/change/invoice/'+order.id+'/', tempOrder).success(function(){
        order = tempOrder; // this doesn't work
        return order;
    });
}
或者使用回调函数

  this.makeReady = function(order, callback) {
        var tempOrder = angular.copy(order);
        tempOrder.status = 1;
        angular.forEach(tempOrder.items, function(item){
            item.status = 1;
        })
        $http.put('/rest/change/invoice/'+order.id+'/', tempOrder).success(function(){
            order = tempOrder; // this doesn't work
            callback(order)
        });
    };
调用函数

this.makeReady({status:1, data:2, items:{status:1}}, function(data){
// this data your order variable in service
})

尝试直接编辑
$scope.allOrders
中的顺序,看看这是否能让您获得所需的行为

    this.makeReady = function (order) {
        var tempOrder = angular.copy(order);
        var orderIndex = $scope.allOrders.indexOf(order);
        tempOrder.status = 1;

        angular.forEach(tempOrder.items, function(item) {
            item.status = 1;
        });

        return $http.put('/rest/change/invoice/' + order.id + '/', tempOrder).success(function () {
            $scope.allOrders[orderIndex] = tempOrder;
        });
    }

我不确定您的第一个示例是否能如预期的那样工作$http.put不是同步的。回调示例应该有效。第一个示例无效。。第二个例子不符合我的逻辑,因为当我更新这个订单时,它将在allOrders变量上更新。。如果第一个示例有效,那就太好了。您将向makeReady函数的order参数传递什么?如果是$scope.order,那么只需使用
$scope.order=tempoder在成功函数中。
$scope.allOrders
包含所有订单,因此当我更改
订单时,它将影响allOrders。。