2016-12-04 6 views
0

Так что я эта конфигурация для моего приложения одной страницы:Изменения маршрута пары не обновляет вид в угловых

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_1 на localhost: 300/#/product/id/id_2 он не обновляет представление с содержимым продукта с id как id_2, пока не обновит браузер. Кроме того, если последний посещаемый url был, скажем, id_1, и я в настоящее время на id_2, то, когда я нажимаю кнопку «Назад», url изменяется на id_1, но представление продолжает оставаться id_2. Я googled, но нашел решения для подобных проблем в React и Vue, но не в Angular. Как я могу сделать маршрут для перезагрузки представления при изменении параметра маршрута?

+0

Возможно, вам также следует написать код контроллера ... – Developer

+0

@Developer Я сделал это сейчас. Надеюсь, это поможет. :( – Utkarsh

+0

Можете ли вы сделать plunkr? – Aravind

ответ

0

Проблема решена при перемещении кода сервиса продукта непосредственно на контроллер вместо создания собственного сервиса продукта с помощью app.factory(), а затем его вводят в контроллер.

Я не очень уверен, но я считаю, что код обслуживания (сервис продукта в этом случае) выполняется только один раз по угловому (во время инъекции зависимостей). Но код в блоке контроллера выполняется снова даже при изменении параметров маршрута.