Javascript 初始化主干视图失败
我有一个骨干模范班。我有一个初始化函数。如果我不想在无效数据上初始化类/对象,我该怎么办Javascript 初始化主干视图失败,javascript,backbone.js,Javascript,Backbone.js,我有一个骨干模范班。我有一个初始化函数。如果我不想在无效数据上初始化类/对象,我该怎么办 initialize: function (data) { if (!valid(data)) { // don't initialize and return an object } } 在这种情况下,您需要重写构造函数 var Library = Backbone.Model.extend({ constructor: function (attrs) { if (
initialize: function (data) {
if (!valid(data)) {
// don't initialize and return an object
}
}
在这种情况下,您需要重写构造函数
var Library = Backbone.Model.extend({
constructor: function (attrs) {
if (!valid(attrs)) {
return {anything: 'else'};
}
Backbone.Model.apply(this, arguments);
}
});
请记住:
- 这种模型可能无法在主干集合中工作
- 如果您想支持完整的模型验证流程,请使用Emile answer
- 最重要的是:只有当你知道你在做什么的时候才使用这个
- 模型已经内置了验证机制。您可以首先在模型上定义一个
此方法未定义,建议您重写它
使用任何可在中执行的自定义验证逻辑
JavaScript。默认情况下,
save
在设置任何值之前检查验证
属性,但您也可以告诉set通过
将{validate:true}
作为选项传递
[……]
var Chapter = Backbone.Model.extend({
validate: function(attrs, options) {
if (attrs.end < attrs.start) {
return "can't end before it starts";
}
}
});
initialize
的返回值为ignore。如果要在属性无效时将其更改回默认值,只需使用set
即可
initialize: function (data) {
if (!this.isValid(data)) {
this.set({ defaultValue: "test" });
return;
}
// normal initialization here
}
主干模型在实例化对象时将始终运行任何
initialize
函数,如果不希望执行某些操作,请不要将其放在initialize
函数上。您还可以抛出错误并进行处理。
干杯。你在标题中说视图,在描述中说模型,是什么?@AndreyMuzalevsky它仍然模棱两可,看起来像是OP中的打字错误。模型比视图更有意义(如描述中所述)。@AndreyMuzalevsky模型还有一个
初始化
函数,它将数据
作为第一个参数接收,将选项
作为第二个参数接收,而视图的初始化
中的选项
是唯一的默认参数。不要像这样重写构造函数
,在执行新建库()
时,会破坏预期的模型。它将使用该模型类破坏任何主干集合。@emilebergron它将按预期工作。你试过这个吗?它不会抛出错误,但在这种情况下这是一种不好的做法。@EmileBergeron有很多方法可以下地狱。。。但当有人问我如何去地狱时,我只会指路。问题就在于此。这不是堆栈溢出的精神。
initialize: function (data) {
if (!this.isValid(data)) {
this.set({ defaultValue: "test" });
return;
}
// normal initialization here
}