backbone.js带有$ .getScript扩展模型
-
25-10-2019 - |
题
我创建了一个新的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.');
}
});
});
不隶属于 StackOverflow