Angular.js - 如何在另一个指令中使用指令?

时间:2013-11-11 15:44:36

标签: templates angularjs svg directive snap.svg

我想在另一个指令中使用指令。

父指令在其模板中使用子指令。

这是我的代码。

HTML

<div ng-app="myApp">
    <div ng-controller="Ctrl">
        <svg>
            <my-line></my-line>
        </svg>
    </div>
</div>

的javascript

var myApp = angular.module('myApp',[
    'myController',
    'myDirectives'
]);

//Controller
var myControllers = angular.module('myControllers', []);
myControllers.controller('Ctrl', function($scope){
    $scope.line = [
        { nodeId:'1'},
        { nodeId:'2'},
        { nodeId:'3'}
    ]
});

//Directives
var myDirectives = angular.module('myDirectives',[]);

myDirectives.directive('myLine',function(){
    return {
        restrict: 'E',
        template:
            '<g ng-repeat="node in line">' +
                '<my-node node="{{node}}"></my-node>' + 
            '</g>'
    };
});

myDirectives.directive('myNode',function(){
    return {
        restrict:'E',
        scope:{
            node:'=node'
        },
        template:
            '<text x="0" y="0">{{node.nodeId}</text>'
    }
});

这是jsfiddle链接。

jsfiddle

但是孩子指令没有显示。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

你的小提琴中有一些错误。我把它们搞定了。

首先应该是

var myApp = angular.module('myApp',[
    'myControllers',
    'myDirectives'
]);

接下来,在myNode指令中它应该是

'<text x="0" y="0">{{node.nodeId}}</text>'

之后,我在两个指令配置中添加了替换。

更新小提琴:http://jsfiddle.net/vNF9L/

现在,没有显示任何内容,但如果您检查dom,您将看到所有内容都按照您的需要输出。

enter image description here