Angular.js可以在脚本标记中的Jade模板中进行插值吗?

时间:2013-02-11 00:14:09

标签: node.js express angularjs pug

我正在使用带有jade模板的角度,我在模板中有一些javascript:

script(type='text/javascript')
    console.log('{{name}}');

在我的角度控制器中,我执行以下操作:

$scope.name = "Bhoutrous";

我可以让{{name}}在模板中的任何其他位置正确插值,只要它不在脚本标记下即可。对我来说,angular会抛出“SyntaxError:invalid property id”错误。我想知道这是玉问题还是有解决方法。我需要在页面加载时将'name'变量的内容传递给js函数。

更新

我知道它可以使用常规模板。以下示例的小提琴:http://jsfiddle.net/atentaten/mnscA/

有没有人有过使用玉石做这样的事情的经验?

HTML:

<div ng-controller="UserCtrl">
    <p>{{data}}</p>
    <div id="dat"></div>

    <script type="text/javascript">
       function doit(text){
          var el = document.getElementById("dat");
           el.innerHTML = text;
       }

      doit( '{{data}}' );  
    </script>
</div>

JS:

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

function UserCtrl($scope) {
        $scope.data = "Green Applese";

};

2 个答案:

答案 0 :(得分:0)

Angular在DOM元素中进行插值。不插入脚本标记和其他随机字符串的内容。您可以在Angular应用程序生命周期之外访问Angular服务,包括$interpolate服务; I answered a question much like this yesterday。但是,就像那个答案一样,我认为这不是用Angular编写应用程序的好方法。

答案 1 :(得分:0)

适用于 jade

的表格
div(ng-controller="UserCtrl",anotherAttr="yourValue")
    p#dataBind {{data}}
    div#dat
    script.
       function doit(text){
          $("#dat").html(text)
       }      
       doit($("#dataBind").text());  

注意点&#34;。&#34;在脚本标记之后,这允许将js代码放在 jade