基于angularJS属性的指令 - 通过隔离范围

时间:2017-02-08 00:13:54

标签: angularjs

我之前写过指令有一个孤立的范围,但它们是元素指令

如果我编写一个基于属性的指令,我该如何将隔离范围传递给它?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用与使用element指令完全相同的方式执行此操作,即将附加属性传递给隔离范围。

<强> HTML:

<div greeting-directive my-greeting="'hello'" greet-who="'world'"></div>

<强> JS:

angular.module("myApp").directive("greetingDirective", function(){
    return {
        restrict: 'A',
        scope: {
            myGreeting: "=",
            greetWho : "=" 
        },
        template: '<p>{{ myGreeting }}, {{ greetWho }}</p>'
    }
});

<强> Sample Plunk

答案 1 :(得分:0)

它非常类似于Element指令的隔离范围。考虑这个例子:

myApp.directive('test', function () {
return {
    restrict: 'A',
    scope: {test: '='},
    link: function (scope, element) {
        scope.$watch('test', function () {
            console.log(scope.test)
        });
    }
};
});

我使用direcitve名称作为范围变量。

<div test="ctrl.val">some stuff</div>

但是如果我不想像这样利用指令名:

myApp.directive('notTest', function () {
return {
    restrict: 'A',
    scope: {test: '='},
    link: function (scope, element) {
        scope.$watch('test', function () {
            console.log(scope.test)
        });
    }
};
});

然后html可能如下所示:

<div not-test test="ctrl.val">some stuff</div>