2016-09-15 3 views
2

Я некоторые функции, как это:выбрать angularjs переменного, используя параметр функции

$scope.activeimageset = function(id){} 

Теперь я перехожу некоторый параметр, как идентификатор упомянутой функции, и я хочу, чтобы выбрать некоторые переменные, используя собранный параметр, что-то вроде этого :

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

Это означает, что я хочу, чтобы выбрать какой-либо объект, используя параметр, передаваемый в мою функцию, а затем я поставил один из атрибутов этого объекта к другому атрибуту. Как я могу это сделать? Я знаю, что мой код неправильный и не работает, но я хочу знать, как я могу заставить его работать?

+0

Что такое ошибка? Является ли 'id' неопределенным в теле функции? – SayusiAndo

+0

не используйте круглые скобки '{{}}' внутри вашего ngController, пожалуйста, предоставьте более подробную информацию. –

ответ

5

Вы можете переписать функцию так:

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

В JS вы можете использовать два способа для получения значений свойств, они Dot Notation and Square Bracket Notation.

Here is очень простой пример использования этих способов:

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]' 

В итоге:

  • Dot нотации быстрее писать и понятнее читать.

  • Обозначение квадратной скобки позволяет получить доступ к свойствам, содержащим
    специальные символы и выбор свойств с использованием переменных (как и в вашем случае).

+1

Большое вам спасибо за ваш код, он решил мою проблему :) – user6767148

1

Вот если предположить, что у вас есть список изображений в виде массива

Вы должны выяснить, объект из массива изображений на основе переданного параметра т.е. идентификатора.

В контроллере

$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; 
} 
1
$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; 
} 

Надежда вот что вы искали

Смежные вопросы