Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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 backbone.js Collection.add()不';t`construct`(`initialize`)对象 创造 新事件` var EventModel=Backbone.Model.extend({ 初始化:函数(){ console.log(“`Event`is initialized.id:+this.cid”); this.bind(“更改:状态”,函数(){ log(this.get(“status”)+“现在是'status`”的值); }); this.bind(“错误”,函数(模型,错误){ 控制台错误(error); }); }, 默认值:{ “状态”:0 }, 验证:函数(attrs){ 如果使用第一个方法(attrs.status_Javascript_Backbone.js - Fatal编程技术网

Javascript backbone.js Collection.add()不';t`construct`(`initialize`)对象 创造 新事件` var EventModel=Backbone.Model.extend({ 初始化:函数(){ console.log(“`Event`is initialized.id:+this.cid”); this.bind(“更改:状态”,函数(){ log(this.get(“status”)+“现在是'status`”的值); }); this.bind(“错误”,函数(模型,错误){ 控制台错误(error); }); }, 默认值:{ “状态”:0 }, 验证:函数(attrs){ 如果使用第一个方法(attrs.status

Javascript backbone.js Collection.add()不';t`construct`(`initialize`)对象 创造 新事件` var EventModel=Backbone.Model.extend({ 初始化:函数(){ console.log(“`Event`is initialized.id:+this.cid”); this.bind(“更改:状态”,函数(){ log(this.get(“status”)+“现在是'status`”的值); }); this.bind(“错误”,函数(模型,错误){ 控制台错误(error); }); }, 默认值:{ “状态”:0 }, 验证:函数(attrs){ 如果使用第一个方法(attrs.status,javascript,backbone.js,Javascript,Backbone.js,,您实际上调用了模型的构造函数 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">&l

,您实际上调用了模型的构造函数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<script
    src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script
    src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
</head>
<body>

    <button id="cmd_create_event" name="cmd_create_event" type="button">Create
        a new `Event`</button>

    <script type="text/javascript">
        var EventModel = Backbone.Model.extend({
            initialize : function() {
                console.log("`Event` is initialized. id: " + this.cid);

                this.bind("change:status", function() {
                    console.log(this.get("status") + " is now the value for `status`");
                });

                this.bind("error", function(model, error) {
                    console.error(error);
                });
            },
            defaults : {
                "status" : 0
            },
            validate : function(attrs) {
                if (attrs.status <= 0)
                    return "invalid status";
            }
        });

        var EventList = Backbone.Collection.extend({
            initialize : function() {
                console.log("`EventList` is initialized");
            },
            model : EventModel,
            add : function(event) {
                console.log("`Event` added to `EventList`.");
            }
        });

        var EventView = Backbone.View.extend({});

        $(document).ready(function() {
            var event_list = new EventList();

            $("#cmd_create_event").click(function() {

                // GENERATION METHOD #1:
                /*var event = new EventModel();
                event.set({
                    status : 1
                });
                event_list.add(event);*/

                // GENERATION METHOD #2:
                event_list.add({
                    status : 1
                });

            });
        });
    </script>

</body>
</html>
使用第二种方法,您只需将
{status:1}
传递到
事件列表中。添加前面定义的
方法,它只记录到控制台,不做任何事情

如果你打电话

var event = new EventModel();

EventList.add
方法中,主干从传递的数据创建一个新的模型实例,并将调用
initialize()
(因为您在定义
EventList
时指定了
model
属性)。

使用第一个方法,您实际上调用了模型的构造函数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<script
    src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script
    src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
</head>
<body>

    <button id="cmd_create_event" name="cmd_create_event" type="button">Create
        a new `Event`</button>

    <script type="text/javascript">
        var EventModel = Backbone.Model.extend({
            initialize : function() {
                console.log("`Event` is initialized. id: " + this.cid);

                this.bind("change:status", function() {
                    console.log(this.get("status") + " is now the value for `status`");
                });

                this.bind("error", function(model, error) {
                    console.error(error);
                });
            },
            defaults : {
                "status" : 0
            },
            validate : function(attrs) {
                if (attrs.status <= 0)
                    return "invalid status";
            }
        });

        var EventList = Backbone.Collection.extend({
            initialize : function() {
                console.log("`EventList` is initialized");
            },
            model : EventModel,
            add : function(event) {
                console.log("`Event` added to `EventList`.");
            }
        });

        var EventView = Backbone.View.extend({});

        $(document).ready(function() {
            var event_list = new EventList();

            $("#cmd_create_event").click(function() {

                // GENERATION METHOD #1:
                /*var event = new EventModel();
                event.set({
                    status : 1
                });
                event_list.add(event);*/

                // GENERATION METHOD #2:
                event_list.add({
                    status : 1
                });

            });
        });
    </script>

</body>
</html>
使用第二种方法,您只需将
{status:1}
传递到
事件列表中。添加前面定义的
方法,它只记录到控制台,不做任何事情

如果你打电话

var event = new EventModel();

在您的
EventList.add
方法中,主干从传递的数据创建一个新的模型实例,并将调用
initialize()
(因为您在定义
EventList
时指定了
model
属性)。但是,我又喜欢OOP!谢谢,那么,你就不能重写<代码> Ad()(代码)>——如果你想在添加到集合中时做额外的事情,考虑绑定到集合的代码>添加< /COD>事件。
到此为止。再次感谢您的小澄清。我希望它知道这是我的意图,而不必显式地校准super
add()
。再次,我喜欢OOP!谢谢:)那么,您将无法覆盖
add()< /代码> -如果您想在添加到集合中时做额外的事情,请考虑绑定到集合的代码>添加< /代码>事件。对了,但现在我想了一下——我简单地覆盖了这个函数,这不是我的意图!我将简单地将代码> bDUDE()/代码>给它。再次感谢您的小澄清。