2016-05-12 5 views
1

Как я могу получить доступ к свойству изолированной области действия в теге директивы? Упрощенный пример:Доступ к свойствам изолированного объема из директивы

angular.module('app', []) 
 
    .controller('myController', function() { 
 
     var result_el = document.getElementById("result"); 
 
     this.log = function(text) { 
 
      var p = document.createElement("p"); 
 
      p.innerHTML = text; 
 
      result_el.appendChild(p); 
 
     } 
 
    }) 
 
    .directive('myDirective', function() { 
 
     return { 
 
      restrict: 'E', 
 
      scope: { 
 
       'click_fn': '&myClick' 
 
      }, 
 
      template: '<span ng-click="click_fn()">Click me!</span>', 
 
      link: function(scope, element) { 
 
       scope.my_prop = 'text property'; 
 
      } 
 
     } 
 
    });
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="myController as mCtrl"> 
 
    <my-directive my-click="mCtrl.log(my_prop)"></my-directive> 
 
</div> 
 
<div id="result"></div>

В этом примере мне нужно, чтобы получить my_prop собственность от объема директивы. Возможно ли это сделать?

ответ

1

Объект определения директивы для изолята сферы (DDO) должно быть, как показано ниже

scope: { 
     click_fn: '&myClick' // click_fn should not be string 
     }, 

В шаблоне директивы, необходимо передать параметр в объект буквального (ступенчатости), как показано ниже

шаблона Директива

template: '<span ng-click="click_fn({my_prop:my_prop})">Click me!</span>' 

Plunker

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