如何从控制台访问主干对象
How to access Backbone objects from console?
在click()
的返回函数中创建了一个骨干集合和一些视图,如下面的代码片段所示。
问题:如何使用Javascript控制台访问backbone.js对象,如Collection productList
?this.productList
不返回任何内容,所以我相信productList
不是window
对象的直接子对象。那么我应该如何创建productList
集合?
JS代码
$('#submit_btn').click(function() {
console.log('do something');
}, function() {
this.productList = new ProductCollection();
var self = this;
self.productListView = new ProductListView({ collection: self.productList });
this.productList.fetch({
data: {gender: 'men'},
processData: true
});
});
});
现在,在这种情况下,您不能将所有内容都放在匿名函数中,因此在函数执行后无法访问它。无论如何,这不是正确的做事方式,也不是主干道。
这就是我通常做事的方式,创建一个类似于应用程序的中心命名空间,然后将该命名空间的所有模型、集合和视图创建为
window.App = {
//model
Curve : {},
//collection
CurveManager : {},
//view
Views : {},
//controller
Controller : {}
}
另外,我认为您应该从主干视图本身处理点击事件,这样您就可以相对容易地将事情可视化。例如http://backbonejs.org/docs/todos.html查看AppView事件。这应该会让事情变得更加清楚。
这是代码的一部分
var AppView = Backbone.View.extend({
el: $("#todoapp"),
statsTemplate: _.template($('#stats-template').html()),
events: {
"keypress #new-todo": "createOnEnter",
"click #clear-completed": "clearCompleted",
"click #toggle-all": "toggleAllComplete"
},
.
. // more code in between
.
createOnEnter: function(e) {
if (e.keyCode != 13) return;
if (!this.input.val()) return;
Todos.create({title: this.input.val()});
this.input.val('');
},
我通常会在github上查看其他人的代码,并尝试了解他们是如何做事的,以及应该如何做事,我建议你也这样做。它帮助很大:)todoapp注释的源代码非常干净,非常容易理解。
您可以将productList附加到window
对象。
$('#submit_btn').click(function() {
console.log('do something');
}, function() {
window.productList = new ProductCollection();
var self = this;
self.productListView = new ProductListView({ collection: self.productList });
window.productList.fetch({
data: {gender: 'men'},
processData: true
});
});
});
但您最好像@avk所说的那样重构代码,所以submit_btn
是Backbone视图的一部分。
不管发生了什么,因为该实例中的this
指的是代码运行的闭包,所以在将其导出到外部可用对象之前,它是不可访问的。
相关文章:
- 如何使用此从对象访问构造函数
- LokiJS与标准Javascript对象访问
- JavaScript子对象访问自己的值
- Javascript嵌套对象访问根级别
- 即使使用 angular.fromJson() 也无法从 json 对象访问字符串
- 从表单到 Ajax 的动态对象访问
- 将 NodeJS 模块范围变量作为对象访问
- 能够从Meteor中的辅助对象访问特定值
- 从JavaScript对象访问数据's数组成员变量
- 如何从 React 中的事件对象访问自定义属性
- 函数中的对象访问;不起作用
- 如何在javascript中从JSON对象访问数组
- 如何从C#.Net Webbrowser对象访问javascript变量
- Javascript中最快的类/对象访问/实例化是什么
- 覆盖对象访问 JavaScript
- 如何从 jquery 中的另一个对象访问在一个对象中声明的变量
- 从 JavaScript 对象访问变量
- 如何从范围对象访问数据到指令
- 从vue.js中的对象访问v-repeat-overarray中的属性
- jQuery:从具有一个类的多个实例的对象访问元素