Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何判断模型在模板中是否是新的?_Javascript_Templates_Backbone.js - Fatal编程技术网

Javascript 如何判断模型在模板中是否是新的?

Javascript 如何判断模型在模板中是否是新的?,javascript,templates,backbone.js,Javascript,Templates,Backbone.js,如果我的模型是新的还是现有的,我希望在模板中显示特定的元素 我试图显示{{id}},{{cid}和{{isNew}},但它们都是空的 以下是一些例子: // The Model var MyModel = Backbone.Model.extend({}); // In the view var model = new Contact(); this.$el.empty().append(this.template(model.toJSON())); // The template : {{

如果我的模型是新的还是现有的,我希望在模板中显示特定的元素

我试图显示
{{id}}
{{cid}
{{isNew}}
,但它们都是空的

以下是一些例子:

// The Model
var MyModel = Backbone.Model.extend({});

// In the view
var model = new Contact();
this.$el.empty().append(this.template(model.toJSON()));

// The template :
{{#if isNew}}New model{{/if}}

如何进行测试?

以下是我提出的解决方案:

// The Model
var MyModel = Backbone.Model.extend({
    'toJSON': function () {
    // Copied from the source
    var obj = _.clone(this.attributes);

    obj['isNew'] = this.isNew();
    return obj;
    }
});

当然,这可以确保此模型不具有属性“isNew”;)

需要更多的背景来回答这个问题。您的模型在何处以及如何定义?它是从哪里来的?属性是如何定义的?您使用的是什么模板引擎?我的需求非常简单。我更新了问题,但我怀疑你会在其中找到更多帮助。但这就是为什么我会这样做(我的模型很简单,视图和模板也很简单)。因此,在模板中,我无法知道模型是否是新的。。。我还想知道
是否有效,因为理论上,id只在模型与服务器同步后才存在。这是一个有趣的想法。我认为这取决于您是否在服务器上等待?像这样使用
toJSON
的缺点是主干将使用
toJSON
为服务器序列化您的模型,而服务器可能不太乐意看到
isNew
。我一直倾向于使用一种单独的方法来序列化视图模型,将
toJSON
parse
留给服务器通信,而另一种方法(默认情况下调用
toJSON
)留给视图。无论如何,这比寻找
id
副作用要干净得多。谢谢你对服务器副作用的提醒,很有趣!你的回答很好,我的评论是供参考的。调整
到json
没有什么错,您只需要了解它的双重用途。