gpt4 book ai didi

ruby-on-rails - 带有 Rails 的 Backbone.js

转载 作者:行者123 更新时间:2023-12-03 16:14:49 27 4
gpt4 key购买 nike

我目前正在尝试 Backbone.js 和一个 rails 应用程序。我的问题是,我不知道如何使用我的 rails 应用程序实现 Backbone Controller 和 View 。我已经阅读了很多教程,但他们总是在backbone.js 中只使用一个 Controller 。

例如,我在 rails 中有两个 Controller 。

  • 事件 Controller
  • 包括两个 View ,一个谷歌地图和一个搜索字段。谷歌地图插入了主干 View ,搜索字段采用 HTML 格式,并通过主干 View 获取其功能。
  • 搜索字段应该从我的 rails 模型中获取数据并在 map 内显示标记。

  • 另一个是
  • 用户 Controller
  • 这里查看了用户配置文件,我想添加一些 ajax 功能,例如更新值和其他内容

  • 在我的 application.js 中,我使用
    var App = {
    Views: {},
    Controllers: {},
    Collections: {},
    init: function() {
    new App.Controllers.Activities();
    new App.Controllers.Users();
    Backbone.history.start();
    }
    };

    $(function() {
    App.init();
    });

    问题是,我不需要我的用户配置文件中的事件 Controller 和 Rails 事件 Controller 中的用户 Controller 。我怎么能解决这个问题?我是否应该尝试在 javascript 中读取当前 URL,然后决定使用哪个 Controller ?
    或者我应该把 JavaScript 文件放到 application.html.erb 中,然后在这里决定应该使用哪个 Controller ?

    或者这是使用backbone.js Controller 的错误方式?

    我对backbone.js的结构有什么误解吗?还是我以错误的方式使用 Controller ?

    另一个问题是,如何通过 Backbone.js 添加少量 JavaScript,尤其是 jQuery 功能?例如,当用户单击该字段时,我想删除字段内的标签。或者我想做一些选项卡功能,只是切换某些元素的可见性。
    我应该为每个使用 javascript 的元素创建一个 Backbone View 吗?或者这是重载?

    希望我说清楚了,任何人都可以提供帮助,
    谢谢!

    最佳答案

    为什么不利用 Backbone 提供的路由特性来决定调用哪个方法呢?事件 Controller 将仅包含用于事件的路由,用户 Controller 仅用于用户处理,等等。
    像这样,您可以像您一样实例化 Controller ,并且路由将根据当前位置的散列决定发生什么。

    如果您不能使用带有哈希的链接(或者您的页面上没有此类链接),我只需将我的 View 容器命名为足够具体,以便在需要时仅为当前 View 附加事件。

    jQuery 插件等属于 IMO View 。您的选项卡和输入提示切换也是如此。

    更新

    在一般层面上(我会 而不是 一定建议这样做): 如果您有两种方法:

    // should be only called for the 'Foo' controller
    function foo() {
    alert("FOO");
    };

    // should be only called for the 'Bar' controller
    function bar() {
    alert("BAR");
    };

    并且想根据当前的 Rails Controller 只调用其中一个,创建一个小助手:

    例如在你 *helpers/application_helper.rb*
    def body_class
    controller.controller_name
    end

    然后在您的布局文件(或标题部分)中调用此方法:
    <body class="<%= body_class %>">


    并使用例如jQuery 来“拆分”你的 JS 执行:
    if ($('body').hasClass('foo')) {
    foo();
    } else if ($('body').hasClass('bar')) {
    bar();
    }

    关于ruby-on-rails - 带有 Rails 的 Backbone.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212622/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com