指令适用于TemplateUrl但不适用于Template

时间:2014-06-23 09:46:25

标签: angularjs angularjs-directive angularjs-ng-repeat

这是一个奇怪的。我是棱角分明的新人,只学习了一个星期左右。

我有两个指令。

第一个:

app.directive('block', function() {
   return {
       restrict: 'E',
       replace: true,
        scope:true,
       link: function(scope, element, attrs) {
           scope.blockCss = function() {
                return attrs.block;
           }
           scope.blockSize = function() {
                return attrs.blocksize;
           }
           scope.category = function() {
                return attrs.category;
           }
       },
       templateUrl: function(elem,attrs) {
           return attrs.block + '.html';
       }
   }
});

这适用于名为:

的元素
<block blocksize="3" category="foo1" blockcss="bar1"></block>

现在是踢球者。

一个相同的指令,但从TemplateUrl更改为Template,以便更具动态性:

app.directive('block', function() {
   return {
       restrict: 'E',
       replace: true,
        scope:true,
       link: function(scope, element, attrs) {
           scope.blockCss = function() {
                return attrs.block;
           }
           scope.blockSize = function() {
                return attrs.blocksize;
           }
           scope.category = function() {
                return attrs.category;
           }
       },
       template: function(elem,attrs) {

           return '<div class="blocksize{{blockSize()}} {{blockCss()}}" ng-repeat="item in items | orderByPriority | filter:{category:category()} | orderBy:myorder" ng-include src="\'{{blockCss()}}.html\'"></div>';
       }
   }
});

我可能是个白痴,但如果有人能指出我错过了什么,我会很感激。

除此之外,我希望能够在模板或模板URL中引用元素中的属性(例如&#39;块&#39;元素) - 这就是我有范围定义的原因(需要是儿童范围)。

真的很期待任何回复。

0 个答案:

没有答案