从模型传递id到View Backbone.js

时间:2015-03-30 21:47:19

标签: javascript backbone.js backbone-views backbone-routing backbone-collections

我正在尝试从集合中获取id以传递给视图。我能够获取模型的信息,只是无法获取视图来获取数据。

在我的模板中,每一行都有模型ID:

<td><a href="#/process/<%= model.id %>"><%= model.name %></a></td>

我的路由器看起来像这样:

var Router = Backbone.Router.extend({
routes: {
    '': 'welcome',
    'process/:id': 'process'
}

});

var router = new Router();

router.on('route:process', function(id) {
  console.log('home page loaded');
  console.log(id);
  var processing = new Processes({id:id});
  processing.fetch({
    success: function(model,response){
        console.log(model.where({'id':id}))
    }
})
processView.render({id: id});
});

正确的ID正在通过,但我无法获取视图来检索ID。

这是我使用Backbone.js的第一个项目

1 个答案:

答案 0 :(得分:1)

在fetch(http://backbonejs.org/#Model-fetch)方法调用返回之前,您将无法使用id / model属性,因为它是异步完成的Ajax调用。

因此,从服务器获取数据后需要执行的所有操作都应放在成功/错误(用于错误处理)回调中。

在您的情况下,对渲染视图的调用应该在成功回调中移动为贝尔。

processing.fetch({
    success: function(model,response){
        console.log(model.where({'id':id}))
        processView.render({id: id});
    }
});