从指令angularjs

时间:2016-04-12 08:04:51

标签: angularjs

我制定了一个指令,在我的视图中显示脚本标记:

angular.module 'app'
.directive 'kwankoScript', ->
  restrict: 'E'
  replace: true
  template: '<script type="text/javascript">
    window.ptag_params = {
    zone: "transaction",
    transactionId: "id",
    currency: "EUR",
    customerId: "' + scope.user.uuid + '",
    siteType: "d"
    };
    </script>'  

我从我的观点dashboard-validate.html中调用此指令,如此:

<kwanko-script></kwanko-script>

我可以从视图中访问{{transaction.uuid}},但我不能从我的指令中访问。

我想将transactionId: "id"替换为 `transactionId:“{{transaction.uuid}}”但它不起作用。

任何帮助将不胜感激。

更新:

这是我的指示:

 angular.module 'paycarApp'
.directive 'kwankoScript', ->

  restrict: 'E'
  replace: true
  scope: 
    transaction-id: "="
  template: '<script type="text/javascript">
    window.ptag_params = {
    zone: "transaction",
    transactionId: {{ transaction-id }},
    currency: "EUR",
    customerId: "' + scope.user.uuid + '",
    siteType: "d"
    };
    </script>'  

和我的观点:

 <kwanko-script transaction-id="{{transaction.uuid}}"></kwanko-script>

如果我不放大括号,则不执行指令

这是输出

 <script type="text/javascript" transaction-id="" class="ng-scope"> 
    window.ptag_params = { 
    zone: "transaction", 
    transactionId: {{ transaction-id }}, 
    currency: "EUR",
    customerId: "7514c32b-0aec-1b00-a52d-e676ff62e297",
    siteType: "d" };
</script>

1 个答案:

答案 0 :(得分:0)

您必须将范围数据从控制器传递到指令范围。理想情况下,控制器和指令的范围不是孤立的,因此我们只需要绑定它们 在视图中&gt;将控制器范围uuid传递给指令,如下所示

<kwanko-script tid = "transaction.uuid"></kwanko-script>

在JS代码&gt;我们需要让指令知道如何使用控制器范围数据

app.directive 'kwankoScript', ->
  restrict: 'E'
  replace: true
  scope: {
         tid : '='
  }
  template: '<script type="text/javascript">
    window.ptag_params = {
    zone: "transaction",
    transactionId: {{tid}},
    currency: "EUR",
    customerId: "' + scope.user.uuid + '",
    siteType: "d"
    };
    </script>'