我有获取对象的资源:
.factory('Product', ['$resource', function($resource) {
return $resource( 'api/product/:id', { Id: '@Id' }, {
update: { method: 'PUT', isArray: false }
});
}])
我使用'resolve'在/ edit / product /:sku中从ng-route调用此资源
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/index', {
templateUrl: 'lord/partials/main'
}).
when('/product/edit/:SKU', {
controller: 'EditCtrl',
templateUrl: function(params){ return 'lord/partials/product/edit' },
resolve: {
product: function( Product, $routeParams ){
return Product.get({ id: 101 }).$promise;
}
}
}).
otherwise({
redirectTo: '/index'
});
}]);
在我的控制器中,我成功收到了产品:
.controller('EditCtrl', ['$scope', 'product', function ($scope, product) {
console.log(product.measures); // I get the object -> Object {weight: 100, length: 200, width: 180, height: 200}
//Initialize object:
$scope.datos = {};
$scope.datos.measures = {};
但是,当我想将该对象“复制”到范围变量时,它不起作用。范围变量是$ scope.datos,它是表单中的对象。我像这样填充这个对象:
<div class="col-md-1">Peso</div>
<div class="col-md-2">
<div class="input-group">
<input type="number" class="form-control" ng-model="datos.measures.weight" >
<span class="input-group-addon">gr</span>
</div>
</div>
<div class="col-md-1">Largo</div>
<div class="col-md-2">
<div class="input-group">
<input type="number" class="form-control" ng-model="datos.measures.lenght">
<span class="input-group-addon">cm</span>
</div>
</div>
<div class="col-md-1">Ancho</div>
<div class="col-md-2">
<div class="input-group">
<input type="number" class="form-control" ng-model="datos.measures.width">
<span class="input-group-addon">cm</span>
</div>
</div>
<div class="col-md-1">Alto</div>
<div class="col-md-2">
<div class="input-group">
<input type="number" class="form-control" ng-model="datos.measures.height">
<span class="input-group-addon">cm</span>
</div>
我在控制器中尝试了几种将我收到的值复制到对象中的方法。
我试过了:
angular.copy(product.measures,$scope.datos.measures);
和
$scope.datos.measures = angular.copy(product.measures);
并且:
$scope.datos.measures = product.measures;
$scope.datos.measures.weight = product.measures.weight;
这些都没有奏效。
但是,将product.measures.width分配给任何变量(如$ scope.dwidth)都可以。但这不是我想要的,因为我的目标要复杂得多。
如何将我收到的对象(product.measures)的值复制到另一个对象($ scope.datos.measures)中并在ng-model中反映该值?
谢谢。
答案 0 :(得分:0)
我能够确定发生了什么。我正在调用另一个重置这些值的控制器。
因此调用了路径控制器(EditCtrl),但之后,页面中的控制器重置了值。
之后,使用以下代码就足够了:
angular.copy(product.measures,$scope.datos.measures);
制作技巧并复制了整个对象。
此外,由于Javascript属性,我不得不将tue $ scope.datos.measures.length名称更改为$ scope.datos.measures.len。