传递骨干和require.js中的参数

时间:2014-03-11 08:35:34

标签: backbone.js requirejs

如何将变量传递给视图文件中的函数?以下是我在控制器中的调用功能。我已经在代码中的路径中添加了视图文件。

app.region.show(new view({templatePath:'app\view\MyView.tpl'});

这里是我希望变量出现的视图文件。像Backbone中的选项。我能想到的一个丑陋的方法是将变量附加到app对象,但是出于显而易见的原因会讨厌这样做。

define(["app"], function(app) {
  require([templatePath], function(someTplFile){
    MyView = Backbone.Marionette.ItemView.extend({
      template: someTplFile
    });
  });  
  return MyView;
});

帮助感谢。

*为pkyeck评论添加编辑**

这不起作用....

contentMain = Backbone.Marionette.ItemView.extend({
    initialize: function(values) {
      require([values.tplName], function(mainTpl){
        this.var1 = mainTpl;
      });  
    },

    template: this.var1,
  });

2 个答案:

答案 0 :(得分:1)

可以在视图的初始化中访问传递给视图的对象。您可以在此处将属性保存到视图中。

这样的事情:

MyView = Backbone.Marionette.ItemView.extend({
    initialize: function(values) {
        this.templatePath = values.templatePath;
    },

    anotherFunction : function(){
        //this.templatePath can be read here
    }
});

app.region.show(new view({templatePath:'app\view\MyView.tpl'});

答案 1 :(得分:0)

我最终得到了以下解决方案......

  require(["app\view\MyView.tpl"], function(viewTpl){
    app.region.show(new contentView.contentMain({template:viewTpl}));      
  });
视图文件中的

...

MyView = Backbone.Marionette.ItemView.extend({
 initialize: function(values) {
   this.var1 = values.template;
 },

 template: this.var1
});

感谢您的帮助