2

简单地说,我正在使用 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); 产生错误(未分别定义未定义的标记“{”和“事物”)。有没有一种方法可以让我从转发器范围内的一段 javascript 访问 thing.Id?

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

4

2 回答 2

6

Mike,在标签中使用角度表达式 ({{thing.id}}) 将不起作用,因为 angular.js 不是基于文本的模板系统,而​​是使用 DOM 作为其模板。这是有关此主题的更多信息:http: //docs.angularjs.org/guide/compiler

现在,回到你的问题:你想要做的事情可以很容易地在 angular.js 中完成,而无需使用 jQuery,这里是一个有效的 jsFiddle:http: //jsfiddle.net/pkozlowski_opensource/n6UfC/

诀窍是在您的href上使用ng-click:

<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

于 2012-07-30T05:57:24.673 回答
1

我会将其存储到“data-id={{thing.id}}”之类的元素中

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

于 2012-07-29T23:06:49.487 回答