16

次のように、Angular ng-click ディレクティブでスコープ メソッドを使用しています。

<a ng-click="$navigate.go('#/path/obj.val1/obj.val2')">{{obj.val1}}, {{obj.val2}}</a>

ここでの問題は、obj.val1 と obj.val2 が、式でメソッドに渡される文字列の一部として解釈されることです。それらを変数として評価する必要があります...ここで正しいアプローチが何であるかわかりません。

これらの値をその文字列/式に連結する角度のある方法はありますか?

私は単に「やり方が間違っている」のでしょうか?

4

4 に答える 4

9

I've created a working CodePen example demonstrating how to do this.

Relevant HTML:

<section ng-app="app" ng-controller="MainCtrl">
  <a href="#" ng-click="doSomething('#/path/{{obj.val1}}/{{obj.val2}}')">Click Me</a><br>
  debug: {{debug.val}}
</section>

Relevant javascript:

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

app.controller('MainCtrl', function($scope) {
  $scope.obj = {
    val1: 'hello',
    val2: 'world'
  };

  $scope.debug = {
    val: ''
  };

  $scope.doSomething = function(input) {
    $scope.debug.val = input;
  };
});
于 2013-10-04T17:25:32.850 に答える
5

を使用して値を連結できます+

<a ng-click="$navigate.go('#/path/' + obj.val1 + '/' + obj.val2)">{{obj.val1}}, {{obj.val2}}</a>

jsfiddle の簡単な例

投稿したコードは単純化された例であると確信しています。パスの構築がより複雑な場合は、効果的に単体テストを記述できるように、URL を構築する関数 (またはサービス) を抽出することをお勧めします。

于 2013-10-04T17:20:20.350 に答える