2013-10-04 6 views
14

私はそうのように、角NG-クリックディレクティブでスコープの方法を使用しています式のメソッドに渡される文字列の一部。私はそれらを変数として評価する必要があります...私は正しいアプローチがここにあるのかよく分かりません。連結スコープ変数は

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

私は単に「間違っている」と思いますか?

パスの建物はより複雑である場合は、ちょうど私はあなたが投稿コードは簡単な例であると確信しています +

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

Simple example on jsfiddle

を使用して値CONCAT、私は機能を抽出推薦することができます

答えて

1

問題が何であるか、投稿したコードから達成しようとしていることはあまり明確ではありませんが、私はそれを刺すでしょう。一般的に

、私はそうのようなNGクリックで関数を呼び出す勧め:

<a ng-click="navigateToPath()">click me</a> 

obj.val1 & obj.val2すると、コントローラの$の範囲で利用可能であるべきで、あなたがマークアップから機能にそれらを渡す必要がいけません。その後、

、お使いのコントローラで:

$scope.navigateToPath = function(){ 
    var path = '/somePath/' + $scope.obj.val1 + '/' + $scope.obj.val2; //dont need the '#' 
    $location.path(path)  
} 
5

あなたの効果的なユニットテストを書くことができるようにあなたのURLを構築するサービス(またはサービス)。

9

私はこれを行う方法を示すworking CodePen exampleを作成しました。

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

関連の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; 
    }; 
}); 
+0

あなたはこれが定義されているドキュメントを指すことはできますか?ありがとう。 :) – TyMayn

0
<a ngHref="/path/{{obj.val1}}/{{obj.val2}}">{{obj.val1}}, {{obj.val2}}</a>