AngularJS将对象参数绑定到对象var

时间:2017-12-13 17:09:24

标签: javascript angularjs

我有一些像这样的代码

$scope.grabItems = function(data) {
  data.model = ['test'];
  console.log($scope.ui.projects);
}

$scope.ui.projects = [];
$scope.grabProjects = function() {
  $scope.grabItems({model: $scope.ui.projects});
}

我正在尝试使用另一个函数的参数更改$scope.ui.projects变量(这样我可以使用任何变量编写抽象的grabItems函数)。

问题是看起来data.model = ['test']根本没有改变$scope.ui.projects变量,而是创建了一个全新的变量。

我如何以可重复使用的方式修改外部变量?

请注意,$scope.ui.projects可能是任何变量。

2 个答案:

答案 0 :(得分:0)

您实际上并没有改变$scope.ui.projects,请尝试这样

$scope.grabItems = function(data) {
  data.model = ['test'];
  console.log($scope.ui.projects);
}

$scope.ui.projects = [];
$scope.grabProjects = function() {
  $scope.grabItems($scope.ui.projects);
}

如果不清楚,请分享您的预期对象。

答案 1 :(得分:0)

你可以通过将项目推入数组来实现它:

$scope.grabItems = function(data) {
  if(!angular.isArray(data.model))
    throw new Error('Array expected');
  data.model.length = 0;       // empty array
  data.model.push('test');   // push items
  console.log($scope.ui.projects);
}

$scope.ui.projects = [];
$scope.grabProjects = function() {
  $scope.grabItems({model: $scope.ui.projects});
}