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); の両方。エラーが発生します (予期しないトークン '{' と 'thing' がそれぞれ定義されていません)。リピーターのスコープ内の javascript のブロックから thing.Id にアクセスする方法はありますか?

実用的な理由を追加するために、その値と他のいくつかのものを使用して、JavaScript (jquery にアクセスできる場所) を使用して URL を作成してリダイレクトしたいと思います。

4

2 に答える 2

6

angular.js はテキストベースのテンプレート システムではなく、テンプレートとして DOM を使用するため、タグで角度式 ({{thing.id}}) を使用しても機能しません。このトピックの詳細は次のとおりです: http://docs.angularjs.org/guide/compiler

ここで、あなたの質問に戻ります。あなたがやろうとしていることは、jQuery を使用せずに angular.js で非常に簡単に行うことができます

トリックは、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 に答える