我有一个视图产品,其中填充了来自控制器 ProductsCtrl 的数据。当点击这些产品之一时,id 被传递给控制器中的一个函数。
在这个函数内部,调用 ProductsService 中的另一个函数,发出一个 http 请求。服务中的函数将响应中的数据传递给控制器中的函数。从那里我尝试将状态更改为另一个视图(产品详细信息),传递这些数据。
到目前为止的代码:
控制器:
$scope.gotoproduct = function (product_id) {
console.log("the product id "+product_id); //ok
ProductService.productdetail(product_id).then(function(data) {
// $scope.userdata = data;
console.log("@product detail controller funct")
console.log(data);
console.log("prape id -- "+product_id);
$state.go('product_detail', {the_data: data})
}).catch(function(errorResponse) {
console.log('error', errorResponse);
});
}
服务:
service.productdetail = function(product_id){
console.log("@product detail service funct");
return httppostrequest($http, producturl, productdata);
}
状态声明:
.state('product_detail', {
url: '/products/detail',
parent: 'app',
params: {the_data: null},
views: {
'products-tab@app': {
templateUrl: 'templates/product.detail.html',
controller: 'ProductsCtrl as product'
}
}
})
视图(我保持简单,只首先显示数据):
<ion-view view-title="{{::products.messages.title}}" >
<ion-content>
<div class = "card">
<div class = "item item-avatar">
<img src = "my-image.png">
</div>
<div class = "item item-body">
<img class = "full-image" src = "my-image.png">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget
pharetra tortor. Proin quis eros imperdiet, facilisis nisi in, tincidunt orci.
Nam tristique elit massa, quis faucibus augue finibus ac.
</div>
</div>
<p>{{product.the_data}}</p>
</ion-content>
</ion-view>
一切正常执行。id 传递给控制器,然后传递给服务。服务发出请求并将响应正确传递给控制器。状态变化有效,视图更改为产品详细信息。但是没有数据显示。我的一个理论涉及角度是异步的事实。也许在数据传递之前状态会发生变化。但是我尝试放置静态数据,但仍然没有显示任何内容。