【问题标题】:angular dot syntax with promise not working带有承诺的角点语法不起作用
【发布时间】:2015-10-09 16:18:49
【问题描述】:

我正在返回一个服务的承诺,并在我的 $stateProvider 中解析

然后我在控制器实例化之前将承诺添加到我的控制器视图模型中

我正在尝试使用点语法来访问承诺的不同部分,但它不起作用

当我显示整个承诺 (vm.detail = historyDe​​tailPromise) 时,它也只是显示为 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.historyDe​​tail($stateParams.id).then(function(data){ return data; });
  • 我真正需要做的就是使用 vm.detail = historyDe​​tailPromise[0];在我的控制器中,因为返回的承诺是一个数组而不是一个对象
  • 请注意,使用resolve时,如果您返回一个promise,它将在注入控制器之前被解析,因此它实际上不是一个promise,而是promise的结果

标签: angularjs ionic-framework angular-ui-router ionic angular-promise


【解决方案1】:

我真正需要做的就是使用 vm.detail = historyDe​​tailPromise[0];在我的控制器中,因为返回的承诺是一个数组而不是一个对象,我错过了 [0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2016-06-07
    • 2016-06-16
    • 2016-05-07
    • 2015-01-22
    相关资源
    最近更新 更多