2016-12-04 59 views
0

視圖,以便我爲我的單頁應用此配置:變化路線PARAM不更新角

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; 
}) 

當我從本地主機中移動:3000 /#/產品/ ID/ID_1到本地主機:300 /#/產品/ ID/ID_2它不會更新視圖與ID爲id_2的產品的內容,直到我刷新瀏覽器。另外,如果上次訪問的網址是id_1,並且我目前在id_2上,那麼當我點擊後退按鈕時,網址會變爲id_1,但視圖仍然是id_2。我谷歌搜索,但找到解決方案類似的問題在React和Vue,但不是在Angular。如何在路由參數更改時重新加載視圖?

+0

也許你應該發佈控制器代碼以及... – Developer

+0

@開發人員我現在做了。希望這會有所幫助。 :( – Utkarsh

+0

你可以做一個plunkr? – Aravind

回答

0

將產品服務代碼直接移動到控制器,而不是使用app.factory()創建自己的產品服務,然後將其注入到控制器,可以解決問題。

我不是很確定,但我認爲服務代碼(這種情況下的產品服務)只能通過角度(在依賴注入時)執行一次。但是,即使在routeParameters發生變化時,控制器塊中的代碼也會再次執行。