【问题标题】:Backbone model with a function in defaults returning object to use in jquery template具有默认返回对象以在 jquery 模板中使用的函数的主干模型
【发布时间】:2020-11-21 00:49:10
【问题描述】:

我有一个类似这样的模型,我想在 jquery 模板中访问这些对象的键值

var Item = Backbone.Model.extend({
  
        defaults : {
                name : "abc"
                designation: "def"
        },

        defaults : {
          
                foo: function (obj) {
                      return {
                          child1: {
                             childName: "Mike",
                             childAge: 20
                          },
                          child2: {
                             childName: "Tom",
                             childAge: 10
                          }
                      };
                }
        }
});

还有一个 jquery 模板,我想在其中访问类似这样的值

<script type="text/x-jquery-tmpl" id="temp1">
    {{ if child1.childAge > 18 }}      
       <p> Allowed </p>
    {{ else }}
       <p> Not Allowed </p>
    {{ /if }}
</script>

我尝试了this.model.toJSON(),但我无法访问像child1.childName 这样的对象值,就像我可以访问“名称”和“名称”一样

我如何访问这些?

【问题讨论】:

    标签: jquery backbone.js jquery-templates backbone-model


    【解决方案1】:

    您的对象中不能有两个defaults 属性,并且在name : "abc" 之后缺少一个,

    defaults 会将函数的返回值(如果以这种方式定义)或对象的属性(如果以这种方式定义)复制到您的实例。但是如果你的对象有函数,它将被原样复制,而不是执行,并复制返回值。

    我不确定您到底想实现什么,似乎您必须使用集合和嵌套模型。

    但是回答你的实际问题,这应该有效:

    const Item = Backbone.Model.extend({
        defaults : function() {
            return {
                name: "abc",
                designation: "def",
                child1: {
                    childName: "Mike",
                    childAge: 20
                },
                child2: {
                    childName: "Tom",
                    childAge: 10
                }
           }    
       },
    });
    
    const item = new Item()
    console.log(item.toJSON())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多