从iFrame

时间:2016-05-26 21:41:55

标签: angularjs

我在应用程序中有一种情况,我希望在使用相同代码库的另一个应用程序的iFrame中加载已经可用的模式。为此,我使用了以下代码:

新用户-module.js

(function () {
'use strict';

angular
    .module('mo.pages.new-user.layouts', ['ui.router', 'ui.bootstrap', 'mo.pages.new-user.services'])
    .config(['$stateProvider', newUserRouteConfiguration]);

function newUserRouteConfiguration($stateProvider) {
    $stateProvider
        .state('new-user', {
            url: '/new-user',
            onEnter: [
                'mo.pages.new-user.services.NewUserPageService', function (newAttachmentPageService) {
                    newAttachmentPageService.openAttachmentModal();
                }
            ]
        });
}})();

新用户-service.js

(function () {

'use strict';

angular
    .module('mo.pages.new-user.services')
    .service('mo.pages.new-user.services.NewUserPageService', NewUserPageServiceFactory);

NewUserPageServiceFactory.$inject = [
    '$stateParams',
    '$modal'
];

function NewUserPageServiceFactory($stateParams, $modal) {
    var service = {
        openUserModal: openUserModal
    };

    return service;

    function openUserModal() {
        return function () {
            $modal.open({
                templateUrl: 'modules/pages/shared/modals/new-user/new-user-modal.html',
                controller: 'mo.pages.shared.modals.NewUserModalController as vm',
                windowClass: 'new-user-modal',
                resolve: {
                    headerText: function() {
                        return 'header';
                    }
                },
                backdrop: 'static',
                size: 'lg'
            });
        };
    }
}})();

我面临的问题是,当在iFrame中调用'/ new-user'但是没有加载templateUrl时,模态正在加载。

1 个答案:

答案 0 :(得分:1)

检查您的控制台,我们认为您拨打newAttachmentPageService.openAttachmentModal();

时可能会发现错误

由于NewUserPageServiceFactory已注册为服务而非工厂,因此不应return任何内容。您应该只是将方法添加到服务对象,例如:

function NewUserPageServiceFactory($stateParams, $modal) {
    this.openUserModal = function() {
        return function () {
            $modal.open({
                templateUrl: 'modules/pages/shared/modals/new-user/new-user-modal.html',
                controller: 'mo.pages.shared.modals.NewUserModalController as vm',
                windowClass: 'new-user-modal',
                resolve: {
                    headerText: function() {
                        return 'header';
                    }
                },
                backdrop: 'static',
                size: 'lg'
            });
        };
    }
}

为了很好地说明服务和工厂之间(轻微)的差异see here

让我知道这是否有效