URL重定向需要具有Backbone帮助的RESTful URL

时间:2013-09-18 05:17:28

标签: javascript rest backbone.js

这是我的index.html中的一小段代码:

<a href="#driver.html"><button type="button"
class="btn btn-default btn-large active style="border-right-color: white">Drivers</button></a> 

我的router.js 我已经包含了视图

 routes: {
   '': 'defaultAction',
   'drivers':'driver'

}

driver:function(){
console.log("Drivers");
var addview = new AddDriverView({el: $("#content")});

//我想在我的内容中加载视图,所以#content     addview.render();

);}

控制台中的输出是Drivers。 现在我想要驱动程序功能加载视图。怎么样?

更新我的观点是

        var AddDriverView = Backbone.View.extend({
                el: '#addDriver',  // addDriver is the id of the form of the view i have created as view.adddriver.htm(it comtains only the form and nothing else.)

                events: {
                    'submit': 'submit'
                },
                ***render: function() {
                    $(this.el).html();    
                },***

                submit: function(e) {
// some code
}
});

是渲染函数正确吗?我所要做的就是渲染表格......

@kunerd

1 个答案:

答案 0 :(得分:1)

在线有很多关于如何实例化Backbone视图的资源。

请阅读:What is a view?

然后查看相应的jsFiddle

编辑:到目前为止,我可以看到,您的问题是您没有在任何地方调用您的观看render()方法。您可以在路由器初始化后调用它,也可以在视图initialize方法中调用它。

控制器中的

AppRouter = Backbone.Route.extend({
  ...
  driver:function(){
    console.log("Drivers");
    var addview = new AddDriverView({el: $("#content")});
    addView.render();
  }
  ...
});

或在视图中:

AddDriverView = Backbone.View.extend({
  initialize: function () {
    this.render();
  }
});

编辑:路由器驱动程序功能的说明: new AddDriverView({el: $("#content")});创建AddDriverView类的新实例。 el属性将此视图绑定到标识为content的现有DOM元素。如果您没有指定一个Backbone将始终创建一个DIV元素。 方法调用addView.render()告诉您新创建的视图将其内容呈现到DOM中,并将其呈现到标识为content的元素中。 有关详细信息,请查看Backbone's Documentation

您还需要在视图中将#addDriver内容用作模板。

render: function(){
  var template = _.template( $("#search_template").html(),{});
  this.$el.html( template );
}

jsFiddle应该可以帮到你。 这里有一些关于underscore templates的更多信息,因为它在上面使用过。

但是有很多方法可以创建视图以及如何使用路由器。有关详细信息,请查看此question and answer