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"
в вашем контроллере
$scope.yourValue="myValue";
в вашей директиве
app.directive('myDirective',function(){
return {
restrict: 'E',
scope: {
yourValue: '='
},
})
в вашем доме
<my-directive your-value="yourValue"></my-directive>
проверить это js скрипка
Если вы не используете изолированную область видимости, вы можете получить доступ к полному контроллеру $ 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;
}
)