Как использовать отсрочку в canjs

Featoff = can.Model.extend("featoff",{
        findAll: {
        url: '/api.php/specialoffers?',
        type: 'GET',
        data: { max : 10 , pid : 977 , sid : 5934 }
        }
      }, {});

Feat = can.Control({ init: function()
 { var that = this; can.view('images/js/mn/temps/featured.ejs', featoff.findAll({}).then(function(d) 
{ return { offerdata : d, secTitle : that.element.data('title') }; })).done(function(frag) 
{ that.element.html(frag); }) }}); 

Я вызываю это с помощью new Feat();

это работает сейчас. Итак, теперь я хочу повторно использовать один и тот же элемент управления Feat с другим набором параметров в findAll. Как мне это сделать? Какой метод использовать и как использовать ?? также могу ли я также отложить или переопределить can.view для того же ??

Могу ли я также иметь один базовый контроллер и просто продолжать переопределять параметры?


person user3083664    schedule 08.01.2014    source источник


Ответы (1)


Чтобы переопределить представление, вы можете расширить свой объект Feat FeatExtended = Feat.extend{ и использовать другое представление в методе инициализации.

Вы также можете указать параметры при вызове new Feat({view : MY_VIEW}). Объект параметров передается в init(), как описано здесь.

Для вашего вопроса findAll вы должны определить findAll как метод, как описано в документации

Надеюсь, это поможет !

РЕДАКТИРОВАТЬ :

Например: вы можете передать объект params, определяющий параметр, который будет добавлен в URL-адрес, и метод HTTP-вызова.

Featoff = can.Model.extend({
  findAll : function(params){
    return $.ajax({
      url: '/api.php/specialoffers?' + params.myoption,
      type: params.method,
      dataType: 'json'})
  }
},{})
person Thomas    schedule 08.01.2014
comment
хорошо, у меня есть краткая идея, но могу ли я получить пример ?? - person user3083664; 08.01.2014
comment
Итак, могу ли я иметь базовую модель, скажем, BaseModel = can.Model.extend({ findAll : function(params){ return $.ajax({ url: '/api.php/specialoffers?' + params.myoption, type: params.method , dataType: 'json'}) } },{}) И используйте findAll в элементе управления и переопределяйте данные. Поэтому я вызову следующий A = can.control.extend({ Basemodel.findAll({url, type})}); - person user3083664; 09.01.2014