백본 테스트 앱을하고 있습니다. 나는 그것을 검증하기로 결정했습니다. 유명한 validate thedersen의 backbone.validation 중 하나를 사용하고 있지만 제대로 작동하지 않습니다. 여기 내 소스가 문제를 파악하는 데 도움이됩니까?
jQuery(document).ready(function($) {
_.extend(Backbone.Validation.callbacks, { //is this wrong place?
valid: function (view, attr, selector) {
console.log("valide"); //i am not getting any console
},
invalid: function (view, attr, error, selector) {
console.log('not valide'); //i am not getting any console
}
});
var Person = Backbone.Model.extend({
defualts : {
first_name : 'qwe',
last_name : 'ewq',
id : 0
},
validation: {
first_name: {
required: true,
msg: 'Please enter a valid first_name'
},
last_name: {
required: true,
msg: 'Please enter a valid last_name'
}
}
});
var PersonCollection = Backbone.Collection.extend({
model : Person
});
var idGen = 1;
var PersonView = Backbone.View.extend({
el : $("#personDisplay"),
tmpl : _.template($("#personTemplate").html()),
editTmpl : _.template($("#editPersonTemplate").html()),
initialize:function(){
},
render : function() {
if (this.model.id != 0) {
$(this.el).append(this.tmpl(this.model.toJSON()));
} else {
$(this.el).append(this.editTmpl(null));
}
//when below uncommitted it works, but i am getting 3 consoles.
// var isValid = this.model.isValid('first_name');
// console.log('isValid', isValid);
}
});
var PersonMasterView = Backbone.View.extend({
el : $("#displayForm"),
editTmpl : _.template($("#editPersonTemplate").html()),
events : {
"click #addUser" : "addUsr",
"click #save" : "add"
},
initialize : function() {
this.collection = new PersonCollection();
this.render();
Backbone.Validation.bind(this);
},
render : function() {
//
$("#personDisplay").html('');
_.each(this.collection.models, function(item) {
//alert('collection iteratin->'+item.id);
var perView = new PersonView({
model : item
});
perView.render();
}, this);
},
add : function(e) {
e.preventDefault();
idGen = idGen + 1;
var data = (Backbone.Syphon.serialize(this));
var that = this;
data.id = idGen;
// console.log(data);
this.collection.add(data);
this.render();
},
addUsr : function() {
var prsn = new Person({
id : 0
});
this.collection.add(prsn);
this.render();
}
});
var pView = new PersonMasterView();
Backbone.Validation.bind(pView);
});
다음과 같이 코드를 업데이트했습니다. 잘 작동합니다. 모두에게 감사합니다
var PersonView = Backbone.View.extend({
el : $("#personDisplay"),
tmpl : _.template($("#personTemplate").html()),
editTmpl : _.template($("#editPersonTemplate").html()),
initialize:function(){
Backbone.Validation.bind(this);
},
render : function() {
var status = this.model.isValid(true);
if (this.model.id != 0) {
$(this.el).append(this.tmpl(this.model.toJSON()));
} else {
$(this.el).append(this.editTmpl(null));
}
}
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다