【发布时间】:2023-03-18 06:31:01
【问题描述】:
当我在我的应用中点击“产品”时,它会使用 URL (#/product/123) 来识别产品。
然后我使用 .split 函数告诉 API 从何处提取单个产品详细信息。
它会加载第一个项目的数据,并且在我刷新浏览器之前该数据不会改变。就好像它认为每个 /product/# 都是同一个页面。
我可以强制它重新加载路线的产品页面吗?也许还有更好的解决方案。
我的部分路线:
.state('product', {
url: '/product/:id',
views: {
'menuContent': {
templateUrl: 'app/components/product/product.html',
controller : 'productsCtrl',
controllerAs : 'pro',
resolve : {
products : function productDetailsResolve ($stateParams, productsApi, $log) {
return productsApi.getApiData($stateParams.id)
.then(function (result) {
return result.data;
})
.catch(function (err) {
$log.error(err);
});
}
}
}
}
})
“产品”页面的 JS:
.factory('productsApi', ['$http', '$location',
function($http, $location){
var BASE_URL = 'http://localhost:8000/api/item/';
var getApiData = function(product_id) {
return $http.get(BASE_URL + product_id);
};
return {
getApiData: getApiData
};
}]
)
.controller('productsCtrl', ['$scope', '$log', 'productsApi', 'UserService', 'products',
function($scope, $log, productsApi, UserService, products) {
var self = this;
self.products = products;
$scope.isVisible = function(name){
return true;// return false to hide this artist's albums
};
// <====== Rewrite with accounts preferences
productsApi.getApiData()
.then(function (result) {
console.log(JSON.stringify(result.data)) //Shows log of API incoming
$scope.products = result.data;
})
.catch(function (err) {
$log.error(err);
});
}
]);
产品 HTML 页面:
<ion-view name="product" hide-nav-bar="true">
<ion-pane ng-controller="productsCtrl">
<!--<ion-pane ng-controller="storesCtrl">-->
<ion-content>
<div class="-""slidebox">
<ion-slide-box show-pager="true" auto-play="true" does-continue="true">
<!--<ion-slide ng-repeat="wardrobe in wardrobes">-->
<img style="width:100%" src="{{products.image}}">
</ion-slide>
</ion-slide-box>
<div class="customback">
<i class="ion-chevron-down" native-ui-sref="cards" native-ui-sref-opts="{reload: true}" native-options="{type: 'slide', direction:'down'}">
</i>
</div>
</div>
<center>
<h1>{{products.name}}</h1>
<br>
<P>${{products.price}}</p>
<br>
{{products.description}}</b>
</ion-content>
【问题讨论】:
-
几个问题让您清楚地了解您的问题..1) 状态
product用于显示与 URL 中的 id 有关的产品详细信息,并且在更改 id 时仍显示旧数据在网址中?? 2) 你在哪里包括productsCtrl??。如果可能的话,您能否为此问题提供小提琴或 plunker 链接。 -
正确 - 即使 URL 中的 id 已更改,它也会显示旧数据。我在我的 html 中包含 productsCtrl(将在上面上传)。不幸的是,我不能提供一个 plunker。
-
那么最好的方法是在 ui-router 中使用
resolves。将发布代码。
标签: angularjs ionic-framework angular-ui-router