如何在单独的文件中从另一个视图调用主干视图功能

ConfuXigrator

我在两个单独的文件中定义了两个主干视图,分别是:LandingView.js

define([
    'jquery',
    'underscore',
    'backbone',
    'marionette',
    'text!templates/landing/landingTemplate.html',
    'text!templates/invitations/invitationsTemplate.html',
    'views/invitations/InvitationsView',
], function ($, _, Backbone, Marionette, landingTemplate, invitationsTemplate, InvitationsView) {
var LandingView = Backbone.View.extend({
        el : $("#landing"),
        id : 'landing',
        transition : 'slide',

        initialize : function () {              
            this.GetNotificationsCounts();
        },
        events : {
            'click #invitations' : 'onInvitations',

        },
        render : function () { 
            var that = this;
            $('.menu li').removeClass('active');
            $('.menu li a[href="#"]').parent().addClass('active');

            this.$el.html(landingTemplate);

        },
        cleanup: function() { 
            this.undelegateEvents();
            $(this.el).empty();
        },
        onInvitations : function () { 

            //do something
        },

        GetProfile: function (userLogin) {
               // do something
        },


        GetNotificationsCounts: function () {
               // do something

        },

        formatAccountName: function () {
             //do something
        }


    });

return LandingView; });

然后是另一个文件InvitationsView.js

define([
    'jquery',
    'underscore',
    'backbone',
    'marionette',
    'views/landing/LandingView',
    'text!templates/invitations/invitationsTemplate.html',
], function ($, _, Backbone, Marionette, LandingView, invitationsTemplate ) {


var InvitationsView = Backbone.View.extend({
        el : $("#invitations"),
        id : 'invitations',
        transition : 'slide',

        initialize : function () { debugger;

            this.$el.attr('data-transition', this.transition);
            this.currentUserLogin = currentUserLogin;
            var that = this;

        },
        events : {

        },
        render : function () { debugger;
            $('.menu li').removeClass('active');
            $('.menu li a[href="#"]').parent().addClass('active');

            this.GetUserInvitationDetails();

             this.$el.html(invitationsTemplate);

        },
        cleanup: function() { 
            this.undelegateEvents();
            $(this.el).empty();
        },

        GetUserInvitationDetails: function () {

            var landingView =  new LandingView();
            currentUserName= landingView.formatAccountName();
            curUser = currentUserName.replace("\\", "^").replace("^", "%5E");

            var profilemsg = landingView.GetProfile(currentUserName);

        },

    });

return InvitationsView;});

现在,我需要将第一个JS中定义的formatAccountName和GetProfile函数调用到第二个JS中。我无法做到这一点。我得到错误。当我尝试

var landingView = new LandingView(); currentUserName = LandingView.formatAccountName();

这也失败了。有人可以在这方面帮助我,并告诉我如何实现这一目标

卡尔·普克

您当前调用该formatAccountName方法的方法有效。以下jsfiddle显示了这一点:

http://jsfiddle.net/v4h11qac/

出现此问题的原因可能是另一个未正确处理的错误,导致代码无法运行。您应该修复现有的错误,并且方法调用应按预期工作。

原始答案:

您可以直接在原型对象上调用该方法:

LandingView.prototype.formatAccountName();

如果您需要通过新的上下文,可以使用如下的callorapply方法:

LandingView.prototype.formatAccountName.call(context);

更好的方法可能涉及创建可以由两个视图共享的帮助程序模块。

var viewHelpers = {
    formatAccountName: function(account) {
        // ...
    }
};

var ViewOne = Backbone.View.extend({
    render: function() {
        var formattedName = viewHelpers.formatAccountName(this.model);
        // ...
    }
};


var ViewTwo = Backbone.View.extend({
    render: function() {
        var formattedName = viewHelpers.formatAccountName(this.model);
        // ...
    }
};

您也可以使用系统总线,但是对于这样的用例来说,它可能有点沉重。如果您想看一下该路径,那么Backbone.Radio提供了一个请求/响应模式,可以用来满足此要求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在另一个视图控制器中调用另一个方法?

来自分类Dev

如何在MVVM Light中调用另一个视图模型构造函数

来自分类Dev

如何在Swift中从另一个视图调用contentOffset?

来自分类Dev

如何在反应原生中从另一个文件包含视图到组件?

来自分类Dev

如何在javascript的另一个功能文件的功能中调用功能文件功能?

来自分类Dev

如何在单独的故事板上显示另一个视图

来自分类Dev

如何在SwiftUI中根据另一个视图的变量显示视图(在ContentView中)?

来自分类Dev

淘汰赛:如何调用另一个视图模型的功能

来自分类Dev

如何在情节提要中的另一个视图内移动视图

来自分类Dev

如何在Android中更改另一个活动的文本视图和图像视图

来自分类Dev

在Swift中调用另一个视图

来自分类Dev

在Swift中调用另一个视图

来自分类Dev

如何在另一个文件类中调用一个类及其功能

来自分类Dev

在烧瓶中,如何在另一个视图中从另一个函数/路由调用数据,如下所述

来自分类Dev

在烧瓶中,如何在另一个视图中从另一个函数/路由调用数据,如下所述

来自分类Dev

如何在一个视图中从SQL中的另一个表求和?

来自分类Dev

如何在Android的另一个模块中访问一个模块的视图?

来自分类Dev

如何从另一个视图中调用一个烧瓶视图?

来自分类Dev

如何在同一活动中的另一个视图之上显示一个视图

来自分类Dev

如何在同一活动中的另一个视图之上显示一个视图

来自分类Dev

单击列表视图项以在单独的活动中显示另一个列表视图

来自分类Dev

从另一个视图访问视图的功能

来自分类Dev

如何调用另一个php文件到Codeigniter视图

来自分类Dev

如何在ios中从一个视图导航到另一个视图?

来自分类Dev

如何在Android中的另一个视图上创建一个浮动视图

来自分类Dev

如何在SwiftUI中从一个视图重定向到另一个视图?

来自分类Dev

如何在推上设置另一个视图

来自分类Dev

如何在Swift中从另一个视图访问视图的表格视图的单元格?

来自分类Dev

如何在Android的另一个视图上覆盖一个视图?

Related 相关文章

  1. 1

    如何在另一个视图控制器中调用另一个方法?

  2. 2

    如何在MVVM Light中调用另一个视图模型构造函数

  3. 3

    如何在Swift中从另一个视图调用contentOffset?

  4. 4

    如何在反应原生中从另一个文件包含视图到组件?

  5. 5

    如何在javascript的另一个功能文件的功能中调用功能文件功能?

  6. 6

    如何在单独的故事板上显示另一个视图

  7. 7

    如何在SwiftUI中根据另一个视图的变量显示视图(在ContentView中)?

  8. 8

    淘汰赛:如何调用另一个视图模型的功能

  9. 9

    如何在情节提要中的另一个视图内移动视图

  10. 10

    如何在Android中更改另一个活动的文本视图和图像视图

  11. 11

    在Swift中调用另一个视图

  12. 12

    在Swift中调用另一个视图

  13. 13

    如何在另一个文件类中调用一个类及其功能

  14. 14

    在烧瓶中,如何在另一个视图中从另一个函数/路由调用数据,如下所述

  15. 15

    在烧瓶中,如何在另一个视图中从另一个函数/路由调用数据,如下所述

  16. 16

    如何在一个视图中从SQL中的另一个表求和?

  17. 17

    如何在Android的另一个模块中访问一个模块的视图?

  18. 18

    如何从另一个视图中调用一个烧瓶视图?

  19. 19

    如何在同一活动中的另一个视图之上显示一个视图

  20. 20

    如何在同一活动中的另一个视图之上显示一个视图

  21. 21

    单击列表视图项以在单独的活动中显示另一个列表视图

  22. 22

    从另一个视图访问视图的功能

  23. 23

    如何调用另一个php文件到Codeigniter视图

  24. 24

    如何在ios中从一个视图导航到另一个视图?

  25. 25

    如何在Android中的另一个视图上创建一个浮动视图

  26. 26

    如何在SwiftUI中从一个视图重定向到另一个视图?

  27. 27

    如何在推上设置另一个视图

  28. 28

    如何在Swift中从另一个视图访问视图的表格视图的单元格?

  29. 29

    如何在Android的另一个视图上覆盖一个视图?

热门标签

归档