首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DomReady与backbone.js

DomReady与backbone.js
EN

Stack Overflow用户
提问于 2012-10-26 23:40:07
回答 2查看 2.3K关注 0票数 3

我正在使用backbone.js创建一个页面应用程序。我是新来的骨干,所以请原谅任何错误的语义学。

我的问题是在呈现视图时。

最初,我的index.html中有一个javascript来执行一些dom操作(图像滑块)。

JS被包装在$(window).load()中,所以在启动时一切都很好。除非从url加载页面,否则代码显然不会执行。代码不会从主干视图或路由器上运行。因此,页面在没有dom操作的情况下加载。

我尝试将我的代码插入视图中的呈现和初始化函数中,但没有结果。我应该把这段代码添加到路由器吗?这似乎是个小插曲。

我应该在哪里包括“多姆准备”代码?和/或是否有更好的方法来管理主干网负载上的视图及其dom元素?

守则:

home.js

代码语言:javascript
运行
复制
window.HomeView = Backbone.View.extend({
initialize:function () {
    this.render();
},

render:function () {
    $(this.el).html(this.template());

    this.startOrbits();
    return this;
},



startOrbits:function(){
    $(window).load(function() {
        $('#orbit-main').orbit({ fluid: '16x6', swipe:true });
        $('#orbit-news').orbit({ fluid: '8x6', bullets: true, directionalNav:false, captions:true, advanceSpeed: 9000});
    });
},




});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-27 19:23:53

我找到了解决办法。在我的路由器功能中注释掉if语句之后,事情进展顺利。

代码语言:javascript
运行
复制
 home: function () {
            // if (!this.homeView) {
                this.homeView = new HomeView();
            // }
            $('#main-content').html(this.homeView.el);
            this.homeView.startOrbits();
            this.headerView.selectMenuItem('home');
        },

我意识到这意味着我在每一个失败触发器上都创建了一个新的视图。请随时提供更多的最佳解决方案。

票数 1
EN

Stack Overflow用户

发布于 2012-10-27 00:20:15

但是当我回到另一个视图时,代码显然不会让人兴奋

我不太清楚那是什么意思。撇开“兴奋”部分不谈,您不会“转到”视图;视图只是将元素添加到页面或向现有元素添加逻辑的方法。

如果我不得不猜测的话,我可以想象您正在使用主干路由器在虚拟“页面”之间移动(使用视图创建这些页面)。如果是这样的话,您需要查看主干路由器事件:

http://documentcloud.github.com/backbone/#Router

http://documentcloud.github.com/backbone/#FAQ-events

具体来说,我认为您希望将事件处理程序(在路由器上)绑定到“路由:nameOfYourRoute”或“just : page”(如果您希望在每个虚拟页面负载上触发您的逻辑)。

希望这有帮助,如果我的猜测是错误的,请编辑你的问题澄清。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13095780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档