Access Nested Backbone Model Attributes from Mustache Template

后端 未结 4 788
不思量自难忘°
不思量自难忘° 2020-12-28 21:50

I have one Backbone model which has an attribute that is a reference to another Backbone model. For example, a Person has a reference to an Address object.

P         


        
4条回答
  •  囚心锁ツ
    2020-12-28 22:31

    I ended up solving this issue with the following approach.

    I switched from Mustache.js to Handlebars.js for the templating engine. This allowed me to use path based expressions to access nested or associated objects and their attributes.

    Hi {{FirstName}}. You live in {{Address.City}}.
    

    But, I also had to change the way I was passing a JSON object to the template. I was using the toJSON method that is part of the Backbone.Model class. But, this was not generating JSON for the associated Address correctly (for the templating to work.) It was burying the address attributes in a member titled "attributes". So, instead, I ended up doing this...

    var jsonForTemplate = JSON.parse(JSON.stringify(person));
    

    This gave me a "raw" version of the objects and their associated objects which the template could access using the syntax shown above. JSON.parse and JSON.stringify are both part of json2.js.

提交回复
热议问题