kik*_*ito 4 javascript backbone.js backbone-views
骨干新手在这里.我想开始在web应用程序上使用backbone(后端是Ruby on Rails),到目前为止它只有很少的客户端功能(一些用于执行slideToggles的jquery,以及一些ajax调用).
我面临的一个问题是Backbone似乎是为了加载你的javascript,然后让它请求数据(通常是JSON)到服务器,然后它呈现视图.在我的情况下这是不可接受的.我想把html源于服务器,将它呈现给用户,然后使用那个html填充我的模型(之后,我对从服务器请求JSON内容的模型很好).
我猜我需要的是某种"逆视图".给出这个html的东西:
<ul class="people">
<li><span class="name">Peter</span></li>
<li><span class="name">John</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
People Collection和具有name属性的Person模型可以解析Peter和John(可能使用View).
这是存在的东西吗?我是以错误的方式接近整个事情吗?
可以附加Backbone.View到服务器上预先呈现的HTML页面.我已经在这个SO答案中更详细地描述了这一点.当页面需要被搜索引擎抓取时,这是一种非常常见的情况.
但是,我建议您不要通过解析服务器呈现的HTML来初始化模型状态.我建议你改为将初始模型数据作为JSON 引导到服务页面.就像是:
<body>
<!-- your server-side template code here -->
<script>
window.bootstrap = {
people: <%= @people.to_json %>
};
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
初始化集合时,只需从引导数据初始化它们并丢弃引导的集合:
var bootstrap = window.bootstrap || {};
var peopleCollection = new PeopleCollection(bootstrap.people);
delete window.bootstrap;
Run Code Online (Sandbox Code Playgroud)
只需确保您的服务器端呈现引擎使用与引导相同的数据,因此您可以保证呈现的页面和初始模型数据同步.
或者,重新考虑像Backbone这样的框架是否适合您的需求.你说你的应用程序有很少的(javascript)功能.你需要Backbone吗?这是一个很棒的框架,但你想要的是工作的正确工具™.