2016-08-12 5 views
0

Helllo,Как передать значение из контроллера директивы в угловых JS

я хочу передать одно значение из контроллера директивы в angularjs. как бы передать значение и отобразить его в директиве.

в Html Раздел

в секции контроллера мое имя контроллера docontroller.

$ scope.name = "world";

angular.element (document.querySelector ('# carControls')) присоединять ($ компилировать ( mydirectivename как тег ) ($ rootScope)).

я должен передать свою переменную, а также контроллер, в котором я могу получить прямой доступ к моим директивам это моя директива используется в контроллере и добавляется к HTML в моей директиве раздела

myApp.directive('Controls', function ($compile, $rootScope, $timeout, $window) { 
    var linker = function (scope, element, attrs) { 
alertr('name' + scope.name);  
    $timeout(function() { 

      scope.controlClass = 'fa fa-pause'; 
      var ControlsTemplate = 

       '<button class="btn btn-default btn-sm margin-r-10 text-center"><i class="fa fa-backward"></i></button>'+ 
       '<button ng-click="doPlayOrPause()" class="btn btn-default btn-sm margin-r-10 text-center"><i id="play-pause" ng-class="controlClass"></i></button>'+ 
       '<button class="btn btn-default btn-sm margin-r-10 text-center"><i class="fa fa-forward"></i></button>'+ 
       '<button ng-click="doStop()" class="btn btn-default btn-sm margin-r-10 text-center"><i class="fa fa-stop"></i></button>'; 

      element.html(ControlsTemplate); 
      $compile(element.contents())(scope); 



     }); 
    }; 
    return { 
     restrict: "E", 
     replace: true, 
     link: linker 
    }; 
}); 

in return i прошел контроллер: «docontroller bt i can not find my name in scope»

+0

вы можете использовать $ часов, чтобы получить доступ к значению области видимости в директиве – Karan

+0

, почему вы делаете это так ... Получение элемента и добавление используя компиляцию $ ... вам нужно преодолеть jQuery способы делать вещи ... – harishr

ответ

0

Если вы не используете изолированную область видимости, вы можете получить доступ к родительскому контроллеру $ scope.

вы также можете использовать $ rootScope.

как

Контроллер:

app.controller("demoCtrl",function($scope,$rootScope){ 

    $rootScope.xyz = "test"; 
// call your directive , value will be accessible in directive 
}) 

Директива:

app.directive(...,function($rootScope){ 
return { 
// extra code omitted. 

    // get your value here like 
    // var abc = $rootScope.xyz; 

} 
) 
2

в вас контроллер

$scope.yourValue="myValue"; 

в вашей директиве

app.directive('myDirective',function(){ 
return { 
     restrict: 'E', 
     scope: { 
      yourValue: '=' 
     }, 
}) 

в вашем йоте

<my-directive your-value="yourValue"></my-directive> 

фотография этого js fiddle

+0

Я хочу отобразить его в директиве –

+0

, но он не работает –

+0

это правильный способ сделать это, показать нам нерабочий код с это решение – DMCISSOKHO

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

  • Нет связанных вопросов^_^