【发布时间】:2015-10-09 16:18:49
【问题描述】:
我正在返回一个服务的承诺,并在我的 $stateProvider 中解析
然后我在控制器实例化之前将承诺添加到我的控制器视图模型中
我正在尝试使用点语法来访问承诺的不同部分,但它不起作用
当我显示整个承诺 (vm.detail = historyDetailPromise) 时,它也只是显示为 JSON
求助!!
depositDetail.html
(function () {
'use strict';
angular
.module('app.history')
.config(stateProvider)
.controller('HistoryDetail', HistoryDetail);
stateProvider.$inject = ['$stateProvider'];
HistoryDetail.$inject = ['historyDetailPromise'];
/* @ngInject */
function stateProvider($stateProvider){
$stateProvider
.state('app.history-detail', {
url: "/history/:id",
views: {
'menuContent': {
templateUrl: "app/history/depositDetail.html",
controller: 'HistoryDetail as vm',
resolve: {
historyDetailPromise: function(historyService, $stateParams){
return historyService.historyDetail($stateParams.id);
}
}
}
}
})
}
/* @ngInject */
function HistoryDetail(historyDetailPromise) {
/* jshint validthis: true */
var vm = this;
vm.activate = activate;
vm.title = 'HistoryDetail';
vm.detail = historyDetailPromise;
activate();
////////////////
function activate() {
}
}
})();
<ion-view view-title="{{vm.title}}">
<ion-content>
<h1>{{vm.title}}</h1>
<h1>{{vm.detail.id}}</h1>
</ion-content>
</ion-view>
【问题讨论】:
-
因为是promise...需要使用promise回调来获取数据
-
你的意思是我的 .state 解析中的 .then 吗?
-
我将我的解析更改为 historyService.historyDetail($stateParams.id).then(function(data){ return data; });
-
我真正需要做的就是使用 vm.detail = historyDetailPromise[0];在我的控制器中,因为返回的承诺是一个数组而不是一个对象
-
请注意,使用resolve时,如果您返回一个promise,它将在注入控制器之前被解析,因此它实际上不是一个promise,而是promise的结果
标签: angularjs ionic-framework angular-ui-router ionic angular-promise