【问题标题】:How to use Defer in canjs如何在canjs中使用延迟
【发布时间】:2014-11-05 10:27:41
【问题描述】:
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() 来调用它;

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

我是否也可以拥有一个基本控制器并继续覆盖参数?

【问题讨论】:

    标签: jquery promise canjs canjs-model


    【解决方案1】:

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

    你也可以在调用new Feat({view : MY_VIEW})的时候给参数。一个选项对象被传递给 init() 描述 here

    对于 findAll 问题,您应该将 findAll 定义为 documentation 中描述的方法

    希望有帮助!

    编辑:

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

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

    【讨论】:

    • 嗯,我有一个简单的想法,但我能举个例子吗??
    • 所以我可以有一个基本模型说 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})});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2019-04-04
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多