2015-06-18 5 views
0

У меня есть функция области видимости, которую я вызываю из директивы, в этой функции области пропускаю переменную sciopoe. Переменная области изменяется в этой функции.передать переменную области от директивы до функции контроллера

<button ng-click="change(scope_variable)"></button> 

Контроллер

$scope.change = function(var){ 
     //some manipulations with var 
    } 

В этом случае переменная сфера не получает изменен, только переменная становится изменен. Что я могу сделать для изменения самой переменной области видимости.

Редактировать:

Переменная сфера, что я передаю массив и изменения, которые я делаю в основном сортировка, вставки и удаления значений из массива.

+0

Вы можете уточнить изменения вы пытаетесь сделать? Поскольку вы не можете изменить ссылку, вы, возможно, сможете делать другие вещи. Директивы –

+1

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

ответ

0
  1. scope имеет ссылку на var, но var не ссылается на область действия. если вы присвоите новое значение var scope сохранит ссылку на старый var и не обновит. если var - это объект или массив, вы можете его изменить и увидеть изменения в scope.
  2. Не следует перечислить переменные var. var - зарезервированное ключевое слово и может ввести в заблуждение.
+0

var - это массив, но переменная области не обновляется. –

0

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

//In the view 
    <button ng-click="change('somevalue')"></button> 

//In your controller 
    $scope.change = function(someVal){ 
      $scope.someVar = someVal; 
      //some manipulations with someVar 
    } 
+0

Да, но я хочу передать переменные переменной в функцию, и окончательное значение переменных области должно измениться. –

+0

Я бы предложил передать значение функции и интерпретировать это значение или задать это значение для переменной области. – Donal

+0

Да, но это потребует много инструкций if-else. Я пытаюсь избежать этого. Нет другого пути в угловом? –

0

А как делать это так:

//In the view 
<button ng-click="change()"></button> 

//In your controller 
$scope.someArray = [1, 2, 3]; 

$scope.change = function(){ 
    $scope.someArray.push(4); 
} 
+0

У меня есть несколько массивов, которые можно изменить. –

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