要求。如何将模型传递到视图(主链) [英] require. how to pass a model to a view (backbone)

查看:215
本文介绍了要求。如何将模型传递到视图(主链)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是骨干require.js。我的问题:我怎么取()我从我的视野内的模型。我曾尝试以下,然而我得到的错误'活动是未定义。我觉得我很接近:

型号:

 定义([
  下划线,
  '骨干'
],功能(_,骨干){    VAR Campagin = Backbone.Model.extend({
       urlRoot:'/ API / V1 /运动/'
    });  返回Campagin;});

查看:

 定义([
  jQuery的,
  下划线,
  '骨干',
  意见/ RewardView',
  意见/ FriendRewardView',
  模型/ CampaginModel',
  的文字!模板/骨干网/门户/ campaignTemplate.html
]函数($,_,骨干,campaignTemplate){
   VAR CampaginView = Backbone.View.extend({
       EL:#活动板,
        渲染:功能(选件){
            如果(options.id){                VAR运动=新Campagin({ID:options.id});
                campaign.fetch({
                    成功:功能(运动){
                        //返回活动奖励的网址时,我们只能得到奖励。                        VAR rewardview =新RewardView();
                        rewardview.render({reward_url:campaign.get('participant_reward')});
                        VAR friendview =新FriendRewardView();
                        friendview.render({reward_url:campaign.get('friend_reward')});
                        VAR模板= _.template(campaignTemplate,{运动:运动});
                        这$ el.html(模板);
                    } //成功结束
                }); //获取结束
            } // end如果option.id
        } //结束渲染功能
    }); //结束campagin视图
  返回CampaginView;});


解决方案

在您查看您指定的依赖关系的阵列,这将被传递给定义函数作为函数的参数,在相同的顺序列出的顺序数组。但是,你只是声明了4个参数: $ (jQuery的), _ (下划线),骨干 campaignTemplate (这是错误的,因为根据你的依赖应该是 RewardView )。所以,你必须正确地声明你的功能。例如:

 定义([
  jQuery的,
  下划线,
  '骨干',
  意见/ RewardView',
  意见/ FriendRewardView',
  模型/ CampaginModel',
  的文字!模板/骨干网/门户/ campaignTemplate.html
]函数($,_,骨干,RewardView,FriendRewardView,Campagin,campaignTemplate){   ...
}

检查要求JS更多信息的文档。

I'm using require.js with backbone. My question: is how do I fetch.() my model from within my view. What I have tried is below, however I get the error 'Campaign is undefined'. I think I'm very close:

Model:

define([
  'underscore',
  'backbone'
], function(_, Backbone) {

    var Campagin = Backbone.Model.extend({
       urlRoot: '/api/v1/campaign/'
    });

  return Campagin;

});

View:

define([
  'jquery',
  'underscore',
  'backbone',
  'views/RewardView',
  'views/FriendRewardView',
  'models/CampaginModel',
  'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, campaignTemplate){


   var CampaginView = Backbone.View.extend({
       el: '#campaign-panel',
        render: function(options) {
            if(options.id){

                var campaign = new Campagin({id: options.id});
                campaign.fetch({
                    success: function(campaign){
                        // We can only get the reward when the campaign reward url is returned.

                        var rewardview = new RewardView();
                        rewardview.render({reward_url: campaign.get('participant_reward')});


                        var friendview = new FriendRewardView();
                        friendview.render({reward_url: campaign.get('friend_reward')});


                        var template = _.template(campaignTemplate, {campaign: campaign});
                        this.$el.html(template);






                    }// end success
                }); // end fetch
            }// end if option.id
        } // end render function
    }); // end campagin view


  return CampaginView;

});

解决方案

In your View you are specifying an array of dependencies, which will be passed to the definition function as function arguments, listed in the same order as the order in the array. But you only declared 4 arguments: $ (jQuery), _ (underscore), Backbone and campaignTemplate(which is wrong because according your dependencies should be RewardView). So you have to declare properly your functions. For example:

define([
  'jquery',
  'underscore',
  'backbone',
  'views/RewardView',
  'views/FriendRewardView',
  'models/CampaginModel',
  'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, RewardView, FriendRewardView, Campagin, campaignTemplate){

   ...
}

Check the documentation of Require JS for more info.

这篇关于要求。如何将模型传递到视图(主链)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆