2013-10-04 81 views
14

我使用的範圍方法的角度NG-點擊指令,像這樣:CONCAT範圍內的變量進入角指令expresssion串

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

這裏的問題是,obj.val1和obj.val2被解釋爲部分字符串傳遞給表達式中的方法。我需要將它們作爲它們的變量進行評估......我不確定這裏有什麼正確的方法。

是否有角度的方式將這些值連接到該字符串/表達式?

我只是「做錯了」?

回答

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

您可以只使用Concat的價值+

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

Simple example on jsfiddle

我相信你發佈的代碼是一個簡單的例子,如果你的路徑構建更復雜的,我會建議提取出功能(或服務),這將建立你的網址,所以你可以有效地編寫單元測試。

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>