我对Backbone相当新,并提出以下问题:
我有一系列模特.
我有一个显示选项卡的集合视图(包含集合中每个模型的视图).
我有一个模型的视图(内容).
我有一个路由器的路由器.
我想要实现的是像http://jqueryui.com/demos/tabs/这样的功能
我单击选项卡(集合模型),然后想要将模型传递给内容视图,可能会更改它并反映集合中的更改.
我想出了四个解决方案:
在路由器中:
'switchCommunity': function(id) {
// (a) set new model attributes
this.view.community.model.set(communities.get(id));
// (b) replace model
this.view.community.model = communities.get(id);
// (c) a custom function of the view changes its model
this.view.community.changeModel(communities.get(id));
// (d) a new view
this.view.community = new View({
model: communities.get(id)
})
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是
(a)不反映集合中模型的变化
(b)不触发(改变)事件,因为视图的初始化函数中的绑定永远不会触发,因为它是一个完全新的模型
(c)对我来说似乎是个黑客
(d)每次我点击选项卡时都会创建一个新视图(这是性能问题吗?)
这里最好的实践是什么?
我正在开发一个Backbone应用程序,该应用程序在很大程度上依赖于使用ajax/fetch调用的REST API.
我的所有业务逻辑都是使用MySQL编写的PHP类.目前我正在使用FRAPI作为API,对我来说效果很好.
在我的开发环境中,我有两个虚拟主机:
问题是我的客户端请求是跨域的(IE和这样的浏览器不起作用).
我该怎么做才能保持我的客户端vhost静态(没有PHP代理)而不使用JSONP?什么RESTful API通常用于Backbone?
是否可以在CSS评论中为mixins使用LESS变量?我需要那些精神.
例如(不工作/仅替换图像路径):
.sprite (@width) {
/** sprite: sprite-@{width}; sprite-image: url('../img/@{width}/sprite-@{width}.png'); sprite-layout: vertical */
.picture {
background-image: url('../img/@{width}/picture.png'); /** sprite-ref: sprite-@{width}; */
}
}
.sprite(800);
Run Code Online (Sandbox Code Playgroud)
额外问题:在使用lessc编译后,我可以阻止background-image和sprite-comment之间的换行符吗?
如何为Backbone中的集合和模型的所有请求设置默认URL /服务器?
示例集合:
define([
'backbone',
'../models/communityModel'
], function(Backbone, CommunityModel){
return Backbone.Collection.extend({
url: '/communities', // localhost/communities should be api.local/communities
model: CommunityModel,
initialize: function () {
// something
}
});
});
Run Code Online (Sandbox Code Playgroud)
我进行初始的AJAX调用以获取我的设置,包括API的URL(api.local).
如何重新路由请求而不将其传递给我的所有模型或硬编码模型和集合中的URL?
backbone.js ×3
javascript ×3
api ×2
css ×1
html ×1
less ×1
model ×1
requirejs ×1
rest ×1
view ×1