使用函数参数选择angularjs变量

select angularjs variable using function parameter

本文关键字:angularjs 变量 选择 参数 函数      更新时间:2023-09-26

我有这样的函数:

$scope.activeimageset = function(id){}

现在,我将一些参数作为ID传递给提到的函数,我想使用收集的参数来选择一些变量,比如:

$scope.activeimageset = function(id){$scope.img{{id}}.src1 = $scope.img{{id}}.src2;}

这意味着我想使用传递给函数的参数来选择某个对象,然后将该对象的一个属性设置为另一个属性。我该怎么做?我知道我的代码是错误的,不起作用,但我想知道如何使它起作用?

您可以这样重写您的函数:

$scope.activeimageset = function(id){
  $scope['img' + id].src1 = $scope['img' + id].src2;
};

在JS中,您可以使用两种方法来获取属性值,它们是点符号方括号符号

以下是使用这些方法的基本示例:

var obj = {
 prop1: 'prop1 value',
 prop2: [1,2,3]
}
var propName = 'prop2';
console.log(obj.prop1); // 'prop1 value'
console.log(obj[propName]); '[1, 2, 3]'

总结:

  • 点记法写起来更快,读起来更清楚。

  • 方括号表示法允许访问包含
    的属性特殊字符和使用变量选择属性(就像您的情况一样(。

这里假设您有作为阵列的图像列表

您必须根据传递的参数,即id,从图像阵列中找出对象。

在您的控制器中

$scope.imgs = [{
    id: 1,
    src1: 'red.jpg',
    src2: 'green.jpg'
}, {
    id: 2,
    src1: 'black.jpg'.
    src2: 'yellow.jpg'
}]
$scope.activeimageset = function(id){
   $scope.img = $scope.imgs.filter(function(img) {
       return img.id === id;
   });
   $scope.img.src1 = $scope.img.src2;
}
$scope.activeimageset = function(id) {
   $scope.listOfObjs; //it is array where all objects are stored
   $scope.dummyAttr; //attr you want to change from object you will get from param
   var requiredObj = ($scope.listOfObjs).filter(function( obj ) {
      return obj.id === id; //returns object with passed id
   });
   $scope.dummyAttr = requiredObj.attr;
}

希望这就是你想要的