2013-10-04 9 views
14

Używam metody w zakres dyrektywy kątowym ng-click tak:zmienne zakres concat w string w kanciasty dyrektywy expresssion

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

Problem jest to, że obj.val1 i obj.val2 są interpretowane jako część ciągu przekazywana do metody w wyrażeniu. Potrzebuję ich do oceny jako zmiennych, które są ... Nie jestem pewien, jakie jest właściwe podejście.

Czy istnieje kątowy sposób łączenia tych wartości w ten ciąg/wyrażenie?

Czy po prostu "robię to źle"?

Odpowiedz

1

Nie jest jasne, jaki jest problem i co próbujesz osiągnąć z kodu, który opublikowałeś, ale zrobię to.

Generalnie sugeruję wywoływania funkcji na ng kliknij tak:

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

obj.val1 & obj.val2 powinny być dostępne na $ zakres swojego sterownika, nie trzeba przechodzić te w zależności od znaczników .

następnie w kontrolerze:

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

Można tylko Concat wartości używając +

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

Simple example on jsfiddle

Jestem pewien, że kod, który pisał to uproszczony przykład, jeśli budynek ścieżka jest bardziej złożona Polecam wydobywania z funkcji (lub usługa), która budowałaby twoje adresy URL, abyś mógł efektywnie pisać test jednostkowy.

9

Utworzyłem working CodePen example demonstrując, jak to zrobić.

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

Stosowna 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

można wskazać w dokumentacji gdzie ta jest określona? Dzięki. :) – TyMayn

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