2013-10-04 5 views
14

मैं बहुत की तरह एक कोणीय एनजी क्लिक निर्देश में एक गुंजाइश विधि का उपयोग कर रहा हूँ:कोणीय निर्देश expresssion में स्ट्रिंग में concat गुंजाइश चर

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

मुसीबत है कि यहाँ obj.val1 है और के रूप में समझा जाता है obj.val2 अभिव्यक्ति में विधि को पारित स्ट्रिंग का हिस्सा। मुझे उन चर के रूप में मूल्यांकन करने की आवश्यकता है जो वे हैं ... मुझे यकीन नहीं है कि सही दृष्टिकोण क्या है।

क्या इन मानों को उस स्ट्रिंग/अभिव्यक्ति में शामिल करने का एक कोणीय तरीका है?

क्या मैं बस "इसे गलत कर रहा हूं"?

उत्तर

1

यह स्पष्ट नहीं है कि समस्या क्या है और आप जो कोड पोस्ट करते हैं उससे पूरा करने का प्रयास कर रहे हैं, लेकिन मैं इसमें एक स्टैब ले जाऊंगा।

सामान्य तौर पर, मैं पर एक समारोह बुला का सुझाव देते हैं तो तरह एनजी-क्लिक करें:

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

प्रासंगिक जावास्क्रिप्ट:

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> 
संबंधित मुद्दे