ฉันแค่พยายามใช้$location.path()
ในคอนโทรลเลอร์ แต่ยังส่งตัวแปรที่กำหนดเองเป็นพารามิเตอร์ด้วย มันจะเป็นแบบนี้ฉันเดาว่า:
$scope.parameter = 'Foo';
$location.path('/myURL/' + $scope.parameter);
แต่นั่นไม่ได้ผล ใครรู้ว่าควรทำอย่างไรใน Angular?
ฉันแค่พยายามใช้$location.path()
ในคอนโทรลเลอร์ แต่ยังส่งตัวแปรที่กำหนดเองเป็นพารามิเตอร์ด้วย มันจะเป็นแบบนี้ฉันเดาว่า:
$scope.parameter = 'Foo';
$location.path('/myURL/' + $scope.parameter);
แต่นั่นไม่ได้ผล ใครรู้ว่าควรทำอย่างไรใน Angular?
คำตอบ:
ในการเพิ่มพารามิเตอร์คุณควรใช้$location.search()
วิธีการดังนี้:
$location.path('/myURL/').search({param: 'value'});
$location
วิธีการมีchainable
ผลิตผลนี้:
/myURL/?param=value
$location.path('/myURL').search({param: 'value'});
อีกวิธีในการเพิ่มพารามิเตอร์ใน url คือ:
$location.path('/myURL/'+ param1);
และคุณสามารถกำหนดเส้นทางไปยัง myPage.html:
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/myURL/:param1', {
templateUrl: 'path/myPage.html',
controller: newController
});
}]);
จากนั้นพารามิเตอร์สามารถเข้าถึงได้ใน newController ดังนี้:
var param1= $routeParams.param1;
ตัวอย่างเช่นหากคุณต้องการใส่พารามิเตอร์อย่างน้อยหนึ่งพารามิเตอร์ใน URL:
$location.path('/path').search({foo: 'valueFoo', baz:'valueBaz'})
ใน url ของคุณจะเป็นตัวแทน
/path?foo=valueFoo&baz=valueBaz
ในการรับพารามิเตอร์ในคอนโทรลเลอร์อื่น:
var urlParams = $location.search();
urlParams.foo will return valueFoo
urlParams.baz will return valueBaz
function pathToSomewhere() {
$stateParams.name= vm.name; //john
$stateParams.phone= vm.phone; //1234
$stateParams.dateOfBirth= getDoB(); //10-10-1990
$location.path("/somewhere/").search($stateParams);
};
ผลลัพธ์นี้ใน url
http://middle-of-nowhere.com/#/somewhere/?name=john&phone=1234&dateOfBirth=10-10-1990
วิธีนี้ทำให้คุณไม่ต้องพิมพ์พารามิเตอร์ในวงเล็บด้วยตนเอง