2015-09-14 3 views
1

Как работает первая функция, а вторая - нет?Как использовать параметры в AngularJS?

<p ng-style="colors.one">1</p> 


$scope.turnOn = function() 
    { 
     $scope.colors.one = {color: "green"}; 
    } 

$scope.turnOff = function(num) 
    { 
     $scope.colors.num = {color: "red"}; 
    } 

$scope.turnOn(); 
$scope.turnOff(one); 

EDIT Я попытался добавить Num на $ scope.colors, как вы, ребята предложили, до сих пор не могу понять это.

$scope.turnOn = function(num) 
    { 
     $scope.colors[num] = {color: "green"}; 
    } 

$scope.turnOff = function(num) 
    { 
     $scope.colors[num] = {color: "red"}; 
    } 

Я звоню функции через

<button ng-switch-when='false' ng-click='turnOn(one)'> 
<button ng-switch-when='true' ng-click='turnOff(one)'> 
+0

Вы пробовали $ scope.colors [num] = {color: "red"}; ? – jfadich

ответ

1

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

<p ng-style="colors.one">1</p> 

т.е.

<button ng-switch-when='false' ng-click='turnOn("one")'> 
<button ng-switch-when='true' ng-click='turnOff("one")'> 

Когда вы делаете ng-click='turnOn(one)', это эквивалентно вызову функции turnOn со значением $scope.one, который не имеет значения в вашем случае, и использование bracket notation просто назначит значение объекту, т. е. $scope.colors[num] = ...

+0

Дох. Спасибо, сэр! – Soricidae

+0

@Soricidae Добро пожаловать .. :) – PSL

0

Параметр 'Num' не имеет никакой связи с $ scope.colors.num

должен быть

$scope.colors[num] = {color: "red"}; 
0

вы должны ссылаться на имена переменных переменных с разными обозначениями:

$scope.turnOff = function(num) { 
    $scope.colors[num] = {color: "red"}; 
}; 

должно работать.

2

num не определен по цветам. Вы можете получить доступ к этому типу свойств следующим образом.

$scope.colors[num] = {color: "red"}; 
Смежные вопросы