2012-07-29 65 views
2

简单地说,我使用AngularJS试图做这样的事情:AngularJS - 你可以在一个JavaScript块中引用一个中继器变量吗?

<ul> 
    <li ng-repeat="thing in things"> 
    <a id="mybutton" href="link{{thing.Id}}">Click</a> 
    <script type="text/javascript"> 
     $("#mybutton").click(function() 
     { 
     alert("Id: " + {{thing.Id}}); 
     }); 
    </script> 
    </li> 
</ul> 

无论是和警报( “ID:” + thing.Id);产量错误(未鉴定的标记“{”和“事物”未分别定义)。有没有一种方法,我可以访问thing.Id从中继器范围内的JavaScript块?

要添加一个实际的原因,我想建立并重定向到一个URL使用该值和其他一些在JavaScript(我有权访问jQuery)的东西。

+3

注意文档建议使用ng-href而不是href:http://docs.angularjs.org/api/ ng.directive:ngHref – Gloopy 2012-07-30 02:39:18

回答

1

我将其存储到像元件 “数据-ID = {{thing.id}}”

然后从JavaScript读取的ID背面使用该数据属性。

6

由于angular.js不是基于文本的模板系统,而​​是使用DOM作为其模板,因此在标记中使用角度表达式({{thing.id}})将无法使用。下面是更多关于这个话题:http://docs.angularjs.org/guide/compiler

现在,回到你的问题:你正在做什么可以在angular.js很容易做到不使用jQuery,这里是一个工作的jsfiddle:http://jsfiddle.net/pkozlowski_opensource/n6UfC/

诀窍是使用NG-点击您的href:

<a ng-click="click(thing.id)">Click</a> 

,然后点击处理函数在你的控制器:

$scope.click = function(thingId) { 
    alert("Id: " + thingId); 
    //$location.path('/some/path/'+thingId); 
} 

在控制器的功能中,您可以使用jQuery指令,但使用angular的$ location服务会更好:http://docs.angularjs.org/api/ng.$location

+3

很好的答案pkozlowski。对于OP:我很抱歉给你一个甚至没有接近正确的解决方案。我回答关于我没有使用的模板引擎的问题真的是错误的。 – 2012-07-30 12:09:06

相关问题