我创建了一个新的backbone.js小部件模型,我希望扩展:

        var Widget = Backbone.Model.extend({
            constructor: function() {
              console.log('Widget constructor called.');
            }
        });

根据页面的不同,用户视图将通过AJAX加载许多小部件,因此对于每个小部件,我都会做这样的事情:

        $.getScript('widgets/widget1', function(xhr){
            var widget1 = new pieChartWidget();
            widget1.render();
            widget1.update();
        });

“窗口小部件/widget1”的内容:

$(function() {

    var pieChartWidget = Widget.extend({
            render: function(json) {
              console.log('Widget render called.'); 
            },
            update: function(json) {
              console.log('Widget update called.'); 
            }
    });

});

在我的燃烧控制台中,我得到了“未定义的piechartwidget”。我知道JavaScript已成功加载,我只是无法从中扩展“小部件”模型。

有帮助吗?

解决方案

您的小部件在函数中定义。因此,所有变量都声明只有可见的,然后函数范围。

$(function() {

  var pieChartWidget;

  // pieChartWidget is only visible here!

});

// pieChartWidget not visible here!

要从功能外部访问小部件,您必须将其分配给全局变量(例如,应用程序名称空间)。您也可以使用窗口(不是首选的方式)。

如果您将小部件分配给窗口,则您的代码应保持不变:

$(function() {

  window.pieChartWidget = Widget.extend({
        render: function(json) {
          console.log('Widget render called.'); 
        },
        update: function(json) {
          console.log('Widget update called.'); 
        }
});

});

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top