2012-09-19 57 views
5

是否有一種將視圖綁定到頁面中已經呈現的html的奇特方式?將骨幹視圖綁定到html已經呈現器

示例您的服務器加載所有頁面html,然後在第一次加載頁面時不使用渲染方法而在該html頂部加載視圖。

+0

不確定你在問什麼。由於JavaScript是客戶端,任何JS框架都可以修改DOM元素而不必依靠服務器(除非您使用服務來加載AJAX相關數據)。這就是單頁應用程序背後的全部想法 - 服務器發送一個包含所有模板的html視圖,JavaScript呈現視圖並操縱html。你能否更具體地描述你正在做的事情? – PhillipKregg

回答

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,當您創建視圖中的 「厄爾尼諾」 屬性。

0

我不完全確定你目前的工作,但我做了一個JSFiddle,只使用Backbone視圖 - 沒有模型或集合或路由器擔心。

你可以玩這個,看看如何將主頁面視圖加載到它的容器中。

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

1

我不確定您的意思是花式方法,但您的意見不需要自己爲el自己渲染html。只需將其分配給它的el,您就可以輕鬆地將視圖附加到頁面上的現有元素。如果您想稍後分配您的視圖el(例如,您想要「開關」其el),那麼您可以使用setElement方法來完成此操作。使用setElement也將創建緩存的$el並移動任何綁定的事件。