传递表达式而不进行评估

时间:2014-03-10 21:28:30

标签: angularjs angularjs-directive

我需要传递一个表达式,该表达式将在父指令属性的指令模板中进行评估。

在这种情况下,它会是这样的。我的“表达式”属性将映射到我的模板锚点ngHref属性,而不会由父级进行任何评估。

以下是我想要做的一个例子。

<div data-my-directive data-expression="'#/inventory/{{page}}'"> </div>

HTML模板(指令模板)

<ul>
   <li data-ng-repeat="page in pageNumberCol"> 
       <a data-ng-href="{{expression}}">Page {{page}}</a>
   </li>
</ul>   

指令声明

    app.directive('myDirective', function () {
    return {
        restrict: "A",
         templateUrl: "/app/directivelayout/myDirectiveTemplate.html"
        , scope: {

           expression: "=?" // What binding do i do here???? @ & or =
        }
    } });

RENDERED HTML

<ul>
   <li><a href="#/inventory/1"> page1 </a> </li>
   <li><a href="#/inventory/2"> page2 </a> </li>
   <li><a href="#/inventory/3"> page3 </a> </li>
</ul>

更新:我已经找到了一个解决方案,但我不太喜欢,所以如果你有什么东西给我,我仍然愿意接受另一种解决方案。

而不是表达式,我传入一个接收页码并返回生成的链接的函数。

所以在我的模板锚中我会做这样的事情。

  <li data-ng-repeat="page in pageNumColl >
     <a data-ng-href="{{generateLink(page)}}" >  Page {{page }} </a>
   </li>

1 个答案:

答案 0 :(得分:1)

你可以稍微设置一下你的传球

<div data-my-directive exp="'#/inventory/' + page"> </div>

然后在指令

    scope: {
        exp: "=",
    },

我创建了一个fiddle基本上就是这个,它为你提供输出:

<a href="test/1" exp="'test/' + page" class="ng-isolate-scope ng-binding">test/1</a>

希望这有帮助!