簡體   English   中英

更改路線參數不會更新Angular中的視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM