2015-04-02 4 views
0

Я пытаюсь получить $ scope.selectedIndicator вне метода при изменении, чтобы использовать его в угловом контроллере.использовать переменную из метода jquery в контроллере angularJs

Любые идеи о том, как я мог получить $ scope.name? Комментарии к приведенной выше скрипке также приветствуются.

$scope.setSelectedIndicator = function() { 
      $('#indicatorSelect').on('change', function(){ 
       $scope.selectedIndicator=$('#indicatorSelect').chosen().val(); 
       var res = $scope.selectedIndicator.split("|"); 
       $scope.selectedIndicatorId=res[0]; 
       $scope.selectedIndicatorName=res[1]; 
       console.log($scope.selectedIndicatorName); 

       }); 
      $scope.name = $scope.selectedIndicatorName ; 
     }; 
     $scope.setSelectedIndicator(); 
+0

так что вы пытаетесь сделать: установить '$ scope.name' на событие изменения или что-то еще? – Grundy

ответ

0

На первом, вы можете просто использовать ng-change директиву угловых для этой цели. Лучше избегать jQuery внутри углового, а также для получения выбранного значения от indicatorSelect, jQuery не требуется. Вы можете сделать это с помощью самого углового элемента.

В любом случае, внутри обработчика событий JQuery change, вы должны использовать $scope.$apply(), чтобы внести изменения в selectedIndicatorName отражают в $scope.name.

Поскольку вы находитесь за пределами углового контекста, вам нужно запустить $scope.$apply(), чтобы изменения отражались.

+0

проблема решена с использованием $ scope. $ Apply() thx;) – kenza

+0

Замечательно. Но почему мой не был принят;) – mohamedrias

0

$ предназначен для использования с angularJS. Вам нужно будет использовать jQuery вместо $. Вот ваша новая функция:

 jQuery('#indicatorSelect').on('change', function(){ 
      $scope.selectedIndicator = jQuery('#indicatorSelect').chosen().val(); 
      var res = $scope.selectedIndicator.split("|"); 
      $scope.selectedIndicatorId=res[0]; 
      $scope.selectedIndicatorName=res[1]; 
      console.log($scope.selectedIndicatorName); 

      }); 
+0

$ используется во всех сервисах angularjs, таких как $ http, $ filter, $ q и т. Д. Кроме этого '$' не назначается какой-либо функции угловым. Но лучше использовать jQuery, чтобы избежать конфликтов. – mohamedrias

0
$scope.setSelectedIndicator = function() { 
      $scope.selectedIndicatorName=''; 
      jQuery('#indicatorSelect').on('change', function(){ 
       $scope.selectedIndicator = jQuery('#indicatorSelect').chosen().val(); 
       var res = $scope.selectedIndicator.split("|"); 
       $scope.Id=res[0]; 
       $scope.Name=res[1]; 
       $scope.$apply(function() { 
        $scope.selectedIndicatorName = $scope.Name; 
       }); 
       console.log($scope.selectedIndicatorName); 

      }); 
Смежные вопросы