2014-05-26 3 views
0

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

Директива:

link: function (scope, elem, attrs) { 
    elem.bind('click', function() { 
     scope.$apply(function() { 
      scope.UserName = elem.html(); 
     }); 

     scope.$apply("MyFunc()"); 
    }); 
} 

Контроллер:

$scope.MyFunc = function myfunction() { 
    OrderService.ServiceFunc($scope.UserName, $scope.Param2).success(
    function (data) { 
     $scope.MyData= data; 
    }); 
} 

В контроллер $ scope.UserName не определен.

Я попытался использовать область действия. $ Apply() (в нескольких вариантах) - не помогло. Также применяется «scope. $ Apply» («MyFunc()»); выполняет функции, определенные в области контроллера, но по какой-то причине я не влияю на мою переменную области видимости.

, когда я добавил $ watch на эту переменную + предупреждение - единственный раз, когда он был предупрежден, был только в начале, когда он был неопределенным, хотя отладка показала, что код достигает строки, когда значение должно было изменяться в директиве ($ watch не предупредил об этом)

Thank you.

+0

У шаблона HTML есть свойство 'UserName'? –

+0

Нет. Я хочу обновить $ scope.Username в контроллере, чтобы он мог выполнять функцию с этой переменной. Я не нуждаюсь в нем в шаблоне html. – Lichte

+0

использовать '$ rootScope' вместо' $ scope' –

ответ

0

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

взглянуть на этот пример, добавьте директиву с $ применить кнопку структуры http://plnkr.co/edit/ZrSkaT0yuB4UWKH8h2Mn?p=preview

вы в основном создать атрибут в вашей директиве, связать, что функции, а затем в основном применяется, что со щелчком затруднительное.

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