1

我想添加另一个函数来从 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 它永远不会到达回调

我应该以某种方式扩展模型吗?有没有办法添加像 FindAll 这样的功能?

非常感谢您

4

2 回答 2

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);
    });
  }
 },{});
于 2013-11-09T22:59:33.617 回答
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
} )
于 2015-04-20T09:25:30.663 回答