2013-10-04 8 views
14

Ich bin mit einem Umfang Verfahren in einem Winkel ng-Click-Richtlinie wie folgt:concat Umfang Variablen in String in Winkel Richtlinie express

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

Das Problem hier ist, dass obj.val1 und obj.val2 werden interpretiert als Teil der Zeichenfolge, die an die Methode im Ausdruck übergeben wurde. Ich brauche sie als die Variablen, die sie sind ... Ich bin mir nicht sicher, was der richtige Ansatz hier ist.

Gibt es eine eckige Möglichkeit, diese Werte in diese Zeichenfolge/den Ausdruck einzutragen?

Bin ich einfach "es falsch machen"?

Antwort

1

Es ist nicht sehr klar, was das Problem ist und was Sie versuchen, aus dem Code, den Sie gepostet haben, zu erreichen, aber ich werde einen Stich machen.

Im Allgemeinen Ich schlage vor, eine Funktion zum Aufruf ng Klick etwa so:

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

obj.val1 & obj.val2 sollte auf Ihrem Controller $ Umfang zur Verfügung steht, brauchen Sie nicht diese in Abhängigkeit von der Markup passieren .

dann in Ihrem Controller:

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

können Sie concat nur die Werte mit +

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

Simple example on jsfiddle

Ich bin sicher, dass der Code, den Sie geschrieben ein vereinfachtes Beispiel ist, wenn Ihr Weg Bau komplexer ist, würde ich empfehlen, eine Funktion Extrahieren aus (oder Service), der Ihre URLs erstellen würde, damit Sie Unit-Test effektiv schreiben können.

9

Ich habe ein working CodePen example demonstriert erstellt, wie dies zu tun.

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

Relevante 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

Können Sie in der Dokumentation zeigen, wo diese definiert? Vielen Dank. :) – TyMayn

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