AngularJS-你能在一个javascript块中引用一个中继器变量吗

AngularJS - Can you reference a repeater variable in a block of javascript?

本文关键字:一个 引用 中继器 变量 AngularJS- javascript      更新时间:2024-04-12

简单地说,我正在使用AngularJS尝试做这样的事情:

<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>

这两者,以及alert("Id:"+thing.Id);yield error(未分别定义未预期的令牌"{"answers"thing")。有没有一种方法可以让我从中继器范围内的javascript块访问thing.Id?

为了增加一个实际的原因,我想使用该值和javascript中的其他一些东西(我可以访问jquery)来构建并重定向到URL。

Mike,在标记中使用角度表达式({{thing.id}})将不起作用,因为angular.js不是一个基于文本的模板系统,而是使用DOM作为模板。以下是有关此主题的更多信息: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

我会把它存储到元素中,比如"data-id={{thing.id}}"

然后从javascript中使用data属性读回ID。