gpt4 book ai didi

javascript - 用于查看连接的 Backbone.js 模型

转载 作者:IT王子 更新时间:2023-10-29 03:12:41 25 4
gpt4 key购买 nike

我是 Backbone.js 新手。我只是在玩弄它。我想知道模型是否与 View 相关。在提供的todos例如,我在 addOne 方法中看到,创建了一个新 View 并将其与新创建的模型关联并附加。

  window.AppView = Backbone.View.extend({
// view code
addOne: function(todo) {
var view = new TodoView({model: todo});
this.$("#todo-list").append(view.render().el);
}
}

当我尝试做类似的事情时,我收到一条错误消息“无法在未定义上找到绑定(bind)方法”。

window.TodoView = Backbone.View.extend({

initialize: function() {
_.bindAll(this, 'render', 'close');
this.model.bind('change', this.render); // I got the error at this place.
this.model.view = this;
}
});

为了解决这个问题,我必须将新创建的模型作为参数传递给 View 构造函数,并且我必须执行 this.model = task 以便关联它。

window.TodoView = Backbone.View.extend({

initialize: function(task) {
_.bindAll(this, 'render', 'close');
this.model = task
this.model.bind('change', this.render);// now there is no error
this.model.view = this;
}
});

window.AppView = Backbone.View.extend({


insertTask:function(){
var newTask, newTaskView;
newTask = new Task(JSON.parse(xhr));
Tasks.create(newTask);
newTaskView = new TaskView({ model: newTask });
$("#todo_list").append(newTaskView.render().el);
this.input.val('');
}

});

但是 todos 示例,没有类似的东西。在待办事项示例中,新模型如何与新 View 隐式关联?

谢谢

最佳答案

它根本不是隐式的,它在此处的这一行中是显式的:

var view = new TodoView({model: todo});

这是创建一个新的 TodoView View 并将其 model 属性设置为 addOne 函数的唯一参数(todo,这是一个模型)。

每当将新模型添加到 Todos 集合时,都会调用 addOne 方法,并以新模型作为参数。

Todos.bind('add', this.addOne);

然后,在 addOne 中,为该模型创建一个新 View ,并通过 {model: todo} 显式设置关系。我怀疑这就是您的代码版本中缺少的内容。

您似乎试图做的是在 View 的 init 函数中链接 View 和模型,这很好,但如果您这样做,您就得靠自己了 - 这意味着您需要设置模型<-> 自己查看关系(您已通过将模型作为参数传递给 View 初始化函数来解决)。

关于javascript - 用于查看连接的 Backbone.js 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com