有没有一种奇特的方式将视图绑定到页面中已经呈现器的 html?
例如,您的服务器加载所有页面 html,然后在第一次加载页面时不使用 render 方法在该 html 之上加载视图。
有没有一种奇特的方式将视图绑定到页面中已经呈现器的 html?
例如,您的服务器加载所有页面 html,然后在第一次加载页面时不使用 render 方法在该 html 之上加载视图。
我做了一些类似于我认为你正在尝试做的事情。就我而言,我在现有表单之上添加了 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”属性传递。
我不确定您所说的花哨方法是什么意思,但是您的视图不需要自己html
渲染el
。您只需将视图分配给它的el即可轻松地将视图附加到页面上的现有元素。如果您想稍后分配您的视图的 el (假设您想“切换” its el
),那么您可以使用setElement方法来执行此操作。使用setElement
还将创建缓存$el
并移动任何绑定事件。
我不确定您目前正在做什么,但我制作了一个仅使用主干视图的 JSFiddle - 无需担心模型、集合或路由器。
您可以尝试一下,看看主页面视图是如何加载到其容器中的。
这是小提琴:http: //jsfiddle.net/phillipkregg/tVmTM/71/