我决定将应用程序路由更改为客户端而不是服务器端.这意味着当用户浏览网站时,我需要一种方法来切换页面内外的视图.我唯一可以找到尝试记录这一点的是本文:如何使用Backbone.js切换视图
我知道这是如何工作的,但我认为这不是一个好方法.我想保留我的观点 - 因为这是重点吗?为您的应用程序的可区分部分提供单独的视图?我认为拥有一个大的"ContentView",然后只是将其中的东西拉进去并重新渲染有点粗糙,并绕过所有酷的模块化,否则你可以做.
那么最好的方法是什么呢?理想情况下,我想要一个类似于上述文章中记录的功能,但是以骨干视图作为其参数.
我使用backbone.js从REST服务器获取集合.获取触发器很好并使用数据填充集合.但是,"reset"触发器永远不会被触发,因此永远不会调用addAll().手动调用addAll()可以正常工作 - 但是为什么在集合上调用fetch()时不应该"重置"触发?
这是代码:
define(['backbone-tastypie'], function(Backbone) {
var Machine = Backbone.Model.extend({
url: function(){
return this.get('resource_uri') || this.collection.url;
}
});
return Machine;
});
Run Code Online (Sandbox Code Playgroud)
define(['backbone-tastypie','models/machine'], function(Backbone, Machine) {
var Machines = Backbone.Collection.extend({
model: Machine,
url: '/api/rest/machine/',
parse: function(data){
return data.objects;
}
});
return Machines;
});
Run Code Online (Sandbox Code Playgroud)
define(['underscore','backbone-tastypie'], function(_, Backbone) {
var MachineTableEntryView = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#machine-row-template').html()),
render: function(){
$(this.el).html(this.template(this.model.toJSON()));
console.log('lol');
return this;
}
});
return MachineTableEntryView;
});
Run Code Online (Sandbox Code Playgroud)
define(['underscore','backbone-tastypie','collections/machines','views/machine_table_entry'], function(_, Backbone, Machines, MachineTableEntryView) {
var MachineTableView = Backbone.View.extend({ …Run Code Online (Sandbox Code Playgroud) 我有3个型号.游戏,玩家和作品.玩家附加到游戏上并且玩家附加到玩家.关系是简单的外键.
在检索游戏时,我还希望从所有玩家中检索所有棋子并将其包含在结果中.
class GameResource(ModelResource):
class Meta:
queryset = Game.objects.all()
resource_name = 'game'
allowed_methods = ['get']
class PlayerResource(ModelResource):
game = fields.ForeignKey(GameResource, 'game')
class Meta:
queryset = Player.objects.all()
resource_name = 'player'
allowed_methods = ['get']
class PieceResource(ModelResource):
player = fields.ForeignKey(PlayerResource, 'player')
class Meta:
queryset = Piece.objects.all()
resource_name = 'piece'
allowed_methods = ['get']
Run Code Online (Sandbox Code Playgroud)
我不知道这是怎么做到的.我最初改变了脱水,以便它只是做正确的查询,调用django serialize,并将它放在bundle中的一个新变量中.这对我来说似乎是一个躲闪.查询集的序列化也被tastypie再次序列化,导致它转义引号字符(urgh).
我正在使用打字稿。我有一个类型,其属性“message”可以是字符串或 null
export type State = {
message: string | null;
};
Run Code Online (Sandbox Code Playgroud)
尽管如此,当尝试将该属性设置为 null 时,我收到以下类型错误。它只允许我将其设置为字符串。
Types of property 'message' are incompatible.
Type 'null' is not assignable to type 'string'.
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的类型:
const initialState = { message: null };
const [state, dispatch] = useFormState(postFiles, initialState);
export async function postFiles(prevState: State, formData: FormData) {
console.log(formData);
return {
message: "Uploaded",
};
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 strictNullChecks 设置为 true,但仍然收到错误。会是什么呢?我缺少什么吗?