Backbone.js: как заставить View обрабатывать ошибку модели? - PullRequest
2 голосов
/ 25 января 2012

По сути, я хочу, чтобы моя модель имела собственную логику проверки при передаче ошибки в представление.Вот код и ссылка: http://jsfiddle.net/jancarlo000/aRFGm/3/

Результат 'неопределен' вместо 'возраст не может быть 0'

Person = Backbone.Model.extend({
    defaults: {
        'FirstName':'JC'
    },   
    initialize: function(){
        console.log('new person');
    },
    validate: function(attr){
        if (attr.Age == 0){
            return 'age cannot be 0';
        }
    }
});

AppView = Backbone.View.extend({
    initialize: function(){
        this.model.bind('error', function(model, error){ 
                                    alert(model); alert(error); 
                                 }());
    }
});

var j = new Person();
var app = new AppView({model:j});
app.model.set({Age:0}); <=== purposely try to invoke validation error here..

//note: console's target must be result(fiddle.jshell.net) 
//in Chrome for it to work...

ОБНОВЛЕНИЕ:

Проблема заключалась в том, что я добавил в свою функцию ненужный оператор вызова () .

1 Ответ

4 голосов
/ 25 января 2012

Проблема здесь:

AppView = Backbone.View.extend({
  initialize: function(){
    this.model.bind('error', function(model, error){ alert(model); alert(error); }());
  }
});

Вам не нужна функция, которую вы связываете для немедленного вызова, удалите парены:

AppView = Backbone.View.extend({
  initialize: function(){
    this.model.bind('error', function(model, error){ alert(model); alert(error); });
  }
});

И запустите ваш код: http://jsfiddle.net/aRFGm/4/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...