2013-10-04 16 views
14

Tôi đang sử dụng một phương pháp phạm vi trong một chỉ thị ng nhấp chuột góc như vậy:phạm vi concat biến thành chuỗi trong chỉ thị góc Expresssion

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

Vấn đề ở đây là obj.val1 đó và obj.val2 được hiểu là một phần của chuỗi được truyền cho phương thức trong biểu thức. Tôi cần chúng được đánh giá là các biến mà chúng là ... Tôi không chắc cách tiếp cận đúng là ở đây.

Có cách nào để ghép các giá trị này vào chuỗi/biểu thức đó không?

Tôi chỉ đơn giản là "làm sai"?

Trả lời

1

Nó không phải là rất rõ ràng vấn đề là gì và những gì bạn đang cố gắng để thực hiện từ mã bạn đăng, nhưng tôi sẽ có một đâm vào nó.

Nói chung, tôi khuyên bạn nên gọi một chức năng trên ng-click như vậy:

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

obj.val1 & obj.val2 nên có sẵn trên điều khiển của bạn $ phạm vi, bạn không cần phải vượt qua những thành một chức năng từ đánh dấu .

sau đó, trong điều khiển của bạn:

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

Bạn chỉ có thể concat các giá trị sử dụng +

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

Simple example on jsfiddle

Tôi chắc chắn mã bạn được đăng là một ví dụ đơn giản, nếu xây dựng đường dẫn của bạn là phức tạp hơn tôi muốn giới thiệu giải nén ra một chức năng (hoặc dịch vụ) sẽ xây dựng các url của bạn để bạn có thể viết bài kiểm tra đơn vị một cách hiệu quả.

9

Tôi đã tạo một working CodePen example chứng minh làm thế nào để làm điều này.

HTML liên quan:

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

liên quan 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

Bạn có thể trỏ đến các tài liệu nơi này được xác định? Cảm ơn. :) – TyMayn

0
<a ngHref="/path/{{obj.val1}}/{{obj.val2}}">{{obj.val1}}, {{obj.val2}}</a> 
Các vấn đề liên quan