2015-01-30 5 views
2

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

var app = angular.module('plunker', []);  
app.controller('MainCtrl', function($scope) { 
    $scope.var1 = 1; 
    $scope.var2 = 2; 

    $scope.changeVar = function (varX) { 
    varX = 'changed'; 
    } 

    $scope.changeVar1 = function() { 
    $scope.changeVar($scope.var1); 
    }; 

    $scope.changeVar2 = function() { 
    $scope.changeVar($scope.var2); 
    } 
}); 

Чтобы продемонстрировать, что я пытаюсь добиться я создал этот Plunker: http://plnkr.co/edit/kEq8YPJyeAfUzuz4Qiyh?p=preview

Что я ожидаю, что либо щелчок на Button1 или button2, var1 var2 или будет изменено на «изменены». Возможно ли это?

ответ

4

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

$scope.changeVar = function (varX) { 
    $scope[varX] = 'changed'; 
    } 

    $scope.changeVar1 = function() { 
    $scope.changeVar("var1"); 
    }; 

    $scope.changeVar2 = function() { 
    $scope.changeVar("var2"); 
    } 

Обновлен пример: http://plnkr.co/edit/K4tnhFdQ7KsuNtKTRI2X?p=preview

Или, другой путь было бы передать функцию к вашему changeVar метода:

$scope.changeVar = function (varX) { 
    varX('changed'); 
    } 

    $scope.changeVar1 = function() { 
    $scope.changeVar(function(x){ $scope.var1 = x }); 
    }; 

    $scope.changeVar2 = function() { 
    $scope.changeVar(function(x){ $scope.var2 = x }); 
    } 

Смотрите, что здесь: http://plnkr.co/edit/ttRWUDzD9jAEj2Z7O64k?p=preview

+0

Спасибо! Так оно и было. – John

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