2013-11-09 63 views
1

我想添加另一個函數來獲取從CanJs型號CanJS添加自定義的模型方法

結果,我有這樣的事情:

VideomakerModel = can.Model({ 
     id:'ID', 
     findAll: 'GET /videomakers/', 
     findNear: function(params){ 
         return $.post("/get_near_videomakers/", 
         {address:params.address}, 
         undefined ,"json") 
        } 
     },{}); 

    VideomakerModel.findNear({address : "Milan"}, function(videomakers) { 
       var myList = new VideomakerControl($('#accordionVm'), { 
       videomakers : videomakers, 
       view: 'videomakersList' 
      }); 
     }); 

如果我命名方法的findAll它工作正常, 否則命名它findnear它永遠不會到達回調

我應該擴展MODEL是某種方式??有沒有添加FindAll這樣的函數的方法?

非常感謝你

+0

提高投票以抵消反對票。沒有理由拒絕投票,這是一個合理的問題。 –

回答

2

CanJS只增加轉化爲模型的實例爲標準findOnefindAll等模型的方法。你將不得不通過VideoMaker.model自己做你的額外的實施運行的結果(單個項目)或VideoMaker.models(多個項目):

VideomakerModel = can.Model({ 
    id:'ID', 
    findAll: 'GET /videomakers/', 
    findNear: function(params) { 
    var self = this; 
    return $.post("/get_near_videomakers/", { 
     address:params.address 
    }, undefined ,"json").then(function(data) { 
     return self.model(data); 
    }); 
    } 
},{}); 
+0

你好DAFF, 我的呼喚與功能: 'VideomakerModel.findNear({地址:地址},功能(視頻製作){ videomakerControl =新VideomakerControl($( '#accordionVm'){ 視頻製作:視頻製作, 觀點:「videomakersList」 }); ' 的數據是好的,但它永遠不會觸發回調, 任何想法,爲什麼 謝謝! – Magico

0

如果我理解這個問題,就必須這樣做:

VideomakerModel = can.Model({ 
     id:'ID', 
     findAll: 'GET /videomakers/' 
    }, 
    { 
     findNear: function(options, success){ 
      can.ajax({ 
       url: "/get_near_videomakers/", 
       type: 'POST', 
       data: options, 
       success: success 
      }) 
     } 
    }) 

var myList = new VideomakerControl({}); 

myList.findNear({address:params.address}, function(resulrRequest){ 
    //success 
}) 
相關問題