[英]View doesn't change after clicking on routerLink to child route angular 2
[英]Change in route param doesn't updates the view in Angular
因此,我的單頁面應用程序具有以下配置:
var app = angular.module('MyApp', ['ng', 'ngRoute']);
app.config(function($routeProvider) {
$routeProvider.
when('/product/id/:id', {
template: '<product-details></product-details>'
})
});
app.directive('productDetails', function() {
return {
controller: 'productDetailsController',
templateUrl: 'templates/product_details.html'
}
});
app.controller('productDetailsController', function($scope, product) {
$scope.product = product;
})
app.factory('product', function($http, $routeParams) {
var product = {};
var id = encodeURIComponent($routeParams.id);
$http.
get('/api/v1/product/id/' + id).
success(function(data) {
return product.data = data;
});
return product;
})
當我從localhost:3000 /#/ product / id / id_1移至localhost:300 /#/ product / id / id_2時 ,直到刷新瀏覽器后,它才會使用ID為id_2的產品內容更新視圖。 另外,如果最后訪問的URL是id_1,並且我當前在id_2上,那么當我單擊“后退”按鈕時,URL會更改為id_1,但視圖仍然是id_2。 我用谷歌搜索,但在React和Vue中找到了類似問題的解決方案,但在Angular中卻找不到。 當route參數更改時,如何使路由重新加載視圖?
通過將產品服務代碼直接移動到控制器,而不是使用app.factory()創建自己的產品服務,然后將其注入到控制器中,可以解決問題。
我不太確定,但是我認為服務代碼(在這種情況下為產品服務)僅按角度執行一次(在依賴項注入時)。 但是,即使在routeParameters發生更改時,也會再次執行控制器塊中的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.