5

有没有一种奇特的方式将视图绑定到页面中已经呈现器的 html?

例如,您的服务器加载所有页面 html,然后在第一次加载页面时不使用 render 方法在该 html 之上加载视图。

4

3 回答 3

10

我做了一些类似于我认为你正在尝试做的事情。就我而言,我在现有表单之上添加了 Backbone 功能。这是一个精简的示例:

现有的 HTML:

<div id="my-app">
  <form name="input" action="html_form_action.asp" method="get">
    Username: <input type="text" name="user" id="username" />
    <input type="submit" value="Submit" />
  </form> 
</div>

骨干:

var MyFormView = Backbone.View.extend({
  events: {
    "submit form": "formHandler"
  },
  formHandler: function(evt) {
    evt.preventDefault();
    var nameVal = $('#username').val();
    this.$el.append('<p>hello: ' + nameVal + '</p>');
  }
});

$().ready(function(){
  var myForm = new MyFormView({el: "#my-app"});
});

关键是在创建视图时将现有的 html 作为“el”属性传递。

于 2012-09-19T18:40:28.947 回答
1

我不确定您所说的花哨方法是什么意思,但是您的视图不需要自己html渲染el。您只需将视图分配给它的el即可轻松地将视图附加到页面上的现有元素。如果您想稍后分配您的视图的 el (假设您想“切换” its el),那么您可以使用setElement方法来执行此操作。使用setElement还将创建缓存$el并移动任何绑定事件。

于 2012-09-19T19:06:25.123 回答
0

我不确定您目前正在做什么,但我制作了一个仅使用主干视图的 JSFiddle - 无需担心模型、集合或路由器。

您可以尝试一下,看看主页面视图是如何加载到其容器中的。

这是小提琴:http: //jsfiddle.net/phillipkregg/tVmTM/71/

于 2012-09-19T17:01:31.367 回答