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

0

Helllo,

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

в разделе Html

в разделе контроллера мое имя контроллера - docontroller.

$ scope.name = "мир";

angule.element(document.querySelector('# carControls')). append ($ compile (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
    };
});

в ответ я передал контроллер: "docontroller bt я can not find my name in scope"

  • 0
    вы можете использовать $ watch для доступа к значению области в директиве
  • 0
    почему вы делаете это так ... получение элемента и добавление с помощью $ compile ... вам нужно преодолеть jquery способы выполнения вещей ...
Теги:
controller
directive

2 ответа

3

в вашем контроллере

$scope.yourValue="myValue";

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

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

в вашем доме

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

проверить это js скрипка

  • 0
    я хочу показать это в директиве
  • 0
    до сих пор это не работает
Показать ещё 4 комментария
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;

}
)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню