如何在canjs中使用Defer

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); }) }}); 

我用新的Feat()来调用它;

这个现在正在运作。 所以现在我想在findAll中使用不同的参数集重用相同的Feat控件,我该怎么办? 使用什么方法以及如何使用? 我也可以推迟或覆盖can.view同样的??

我是否还可以使用单个基本控制器并保持覆盖参数?

要覆盖视图,您可以扩展您的Feat对象FeatExtended = Feat.extend{并在init方法中使用不同的视图。

您还可以在调用new Feat({view : MY_VIEW})时给出参数。 如此处所述,选项对象被传递给init()。

为了找到所有问题,您应该将findAll定义为文档中描述的方法

希望有所帮助!

编辑:

例如:您可以传递一个params对象,该对象定义要在URL中添加的选项以及HTTP调用的方法

 Featoff = can.Model.extend({ findAll : function(params){ return $.ajax({ url: '/api.php/specialoffers?' + params.myoption, type: params.method, dataType: 'json'}) } },{}) 
Interesting Posts