簡體   English   中英

將骨干模型屬性傳遞給車把助手

[英]Passing Backbone Model attribute to Handlebars Helper

骨干網模型的屬性為“ selectedYear”。 我需要將此“ selectedYear”屬性傳遞給Handlebars Custom Helper。

var sq2SelectCarYearModel = Backbone.Model.extend({

    urlRoot: "api/caryears",
    selectedYear: "0"


});

這是我嘗試過的:這是把手模板:

template: Handlebars.compile("{{#times 27 this.model.attributes.selectedYear}}{{/times}}")

車把助手聲明:

Handlebars.registerHelper('times', function(n, selectedYear, block) {
    // I need to use "this.model.attributes.selectedYear" here

});

PS:“時間”是自定義幫助程序的名稱,“ n”是循環將運行的次數。

我也試過這個:

template: Handlebars.compile("{{#times 27 selectedYear}}{{/times}}")

但它仍然無法正常工作。

selectedYear不是模型上的屬性,而是屬性。

您可以通過執行以下操作將其設置為默認值:

var CarModel = Backbone.Model.extend({
  urlRoot: 'api/caryears',

  defaults: {
    selectedYear: 0
  }
});

var model = new CarModel()
// model.get('selectedYear') -> 0

您也可以在實例化時將其傳遞

var model2 = new Model({ selectedYear: 2 });
// model2.get('selectedYear') -> 2

或者您可以在實例化后進行設置:

var model3 = new Model();
model3.set('selectedYear', 3);
// model3.get('selectedYear') -> 3

編輯

要在骨干網視圖中使用模型屬性,我建議您執行以下操作

var MyView = Backbone.View.extend({
  initialize: function() {
    this.model = new Model({
      selectedYear: 1
    });
  },

  render: function() {
    var template = Handlebars.compile("{{#times 27 selectedYear}}{{/times}}");
    this.$el.html(template(this.model.toJSON));
  }
});

Backbone.Marionette會為您做很多事情-如果為Marionette View提供模板,它將自動傳入models屬性,因此您無需提供render方法。

例如:

var MyView = Marionette.ItemView.extend({
  template: Handlebars.compile('your template here')
});

var model = new Model({selectedYear: 1});

var view = new view({model: model});

view.render();

// or region.show(view) which will automatically render the view.

您應該在模型的defaults設置selectedYear

var sq2SelectCarYearModel = Backbone.Model.extend({
  urlRoot: "api/caryears",
  defaults: {
   selectedYear: "0"
  }
});

以便將其添加到模型attributes屬性中。 要在創建后對其進行設置,應使用set()方法,該方法會將屬性添加到模型屬性哈希。

現在,它已添加為模型中的直接屬性, this.model.selectedYear可能有效,但不是正確的方法。 數據應添加到模型屬性哈希中,以便其他事件(如事件)正常運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM