访问backbone.js中视图的元素

发布于 2024-12-18 17:22:02 字数 679 浏览 0 评论 0原文

我已经尝试过 Backbone.js,到目前为止,这确实是一种享受。非常简单,却又极其强大。很棒的图书馆!

但我遇到了一个问题:我似乎无法访问我的视图的链接元素(el 属性)。

我下面的示例警告未定义。看一下这个小提琴来看看它的实际效果。

$(function() {
    // Init when DOM is Ready
    App.init();
});

var App = {
    init: function() {
        new App.MyView();
    }
}

App.MyView = Backbone.View.extend({
    el: '#some-id',
    initialize: function() {
        App.MyController.doSomething();
    }
});

App.MyController = {
    doSomething: function() {
        alert('MyView.el: ' + App.MyView.el); // Outputs 'MyView.el: undefined'
    }
}

I've dipped my toes in Backbone.js and it's been a real treat so far. Very simple, yet extremely powerful. Awesome library!

I'm having one problem though: I can't seem a way to access the linked element(the el property) of my views.

My example below alerts undefined. Take a look at this fiddle to see it in action.

$(function() {
    // Init when DOM is Ready
    App.init();
});

var App = {
    init: function() {
        new App.MyView();
    }
}

App.MyView = Backbone.View.extend({
    el: '#some-id',
    initialize: function() {
        App.MyController.doSomething();
    }
});

App.MyController = {
    doSomething: function() {
        alert('MyView.el: ' + App.MyView.el); // Outputs 'MyView.el: undefined'
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月流歌 2024-12-25 17:22:02

2 个问题:

  1. 您已将 el 定义为选择器,因此它必须在 DOM 中
  2. 您试图提醒构造函数的 el 属性而不是实例 el代码>属性。

已修复:

http://jsfiddle.net/X8B2U/2/

<div id="some-id"></div>
$(function() {
    // Init when DOM is Ready
    App.init();
});

var App = {
    init: function() {
       new App.MyView();

    }
}

App.MyView = Backbone.View.extend({
    el: '#some-id',
    initialize: function() {
        App.MyController.doSomething(this);
    }
});

App.MyController = {
    doSomething: function( myView ) {
        console.log( myView );
        alert('MyView.el: ' + myView.el);
    }
}

2 problems:

  1. You have defined el as a selector, so it must be in the DOM
  2. You tried to alert the constructor's el property instead of the instance el property.

Fixed:

http://jsfiddle.net/X8B2U/2/

<div id="some-id"></div>
$(function() {
    // Init when DOM is Ready
    App.init();
});

var App = {
    init: function() {
       new App.MyView();

    }
}

App.MyView = Backbone.View.extend({
    el: '#some-id',
    initialize: function() {
        App.MyController.doSomething(this);
    }
});

App.MyController = {
    doSomething: function( myView ) {
        console.log( myView );
        alert('MyView.el: ' + myView.el);
    }
}
别想她 2024-12-25 17:22:02

el 属性应该是引用现有 DOM 元素的 jquery 元素。

el : $('#some-id')

The el property should be a jquery element referencing an existing DOM element.

el : $('#some-id')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文