从指令

时间:2016-05-12 08:59:42

标签: javascript angularjs angularjs-directive

如何在指令标记中访问隔离范围的属性? 简化示例:



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';
            }
        }
    });
&#13;
<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>
&#13;
&#13;
&#13;

在这个例子中,我需要从指令的范围中获取my_prop属性。有可能以某种方式这样做吗?

1 个答案:

答案 0 :(得分: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