主干目标模型 = 未定义

Backbone targetModel = undefined

本文关键字:未定义 模型 目标      更新时间:2023-09-26

我在主干中遇到了这个问题,尽管所有脚本都已加载,但模型似乎未定义到骨干。(我正在使用require来加载骨干和其他javascript文件)。

因此,每当我执行 collection.fetch 时,我都会在 firebug 中收到此错误:

TypeError: targetModel is undefined

当我运行脚本时,它此时保持不变:

if (attrs instanceof Model) {
    id = model = attrs;
} else {
    id = attrs[targetModel.prototype.idAttribute];
} 

当我将鼠标悬停在目标模型上时,它说:未定义不知何故,它现在似乎不起作用,我唯一做的就是更改我的 html 模板,该模板仅在 collection.fetch 之后加载。

你能在这里帮我吗?

这是我的模型:

var OF = OF || {};
OF.UsersMdl = Backbone.Model.extend({
    default: {
        username: '',
        mailinglist: '',
        email: ''
    },
    initialize: function() {
        //
    },
    result: {
        success: false,
        message: ''
    },
    validate: function(att) {
    }
});

这是集合:

var OF = OF || {};
OF.UsersCollection = Backbone.Collection.extend({
    initialize: function() {
        //
    },
   parse: function(data){
        return data["all-users"];
    },
    model: OF.UsersMdl,
    url: 'php/api/users'
});

最后但并非最不重要的是具有所需部分的路由器:

goToUsers: function() {
    require(['./models/users', './views/users_view', './collections/user_collection'], function(UsersMdl, UsersView, UsersCollection) {
        OF.usersMdl = new OF.UsersMdl;
        OF.usersCollection = new OF.UsersCollection;
        OF.usersView = new OF.UsersView;
        //when the collection is fetched
        $.when(OF.usersCollection.fetch({
            data: {
                "admin": OF.login.attributes.admin,
                "session": OF.login.attributes.session
            },
            success: function(){
                //console.log(OF.usersCollection.length);
            }
        //then render the view
        })).then(function(){
            OF.usersView.render();
        }, 300);
    });
},

以下是将由获取检索的 JSON:

{ "所有用户": [ { "用户名":"测试器", "邮件列表":"1", "电子邮件":"tester@tester.测试" }, { "用户名":"测试器2", "邮件列表":"1", "电子邮件":"tester2@tester.测试" }, { "用户名":"测试器3", "邮件列表":"0", "电子邮件":"tester3@tester.test" } ]}

提前致谢

我遇到了同样的错误,并在很长一段时间内用头撞它,因为骨干对我来说是新的,这加剧了获取问题。 无论如何,我最终发现顺序很重要。 咚! (我认为在使用CoffeeScript和"class"语句时不太明显。 对于我的一个模型,我在模型之前设置了集合(感谢Backbone.js on Rails书中的错误示例代码)。 我撤消了它,此错误消失了,以揭示我真正的获取问题。

同样,您的 model: 属性可能由于此原因或其他原因而无效,在以后尝试引用时将其保留为未定义。

旁注:我在 Backbone 1.0.0 中遇到了类似的错误。 当我升级到 Backbone 1.1.0 时,我在 Backbone 代码的同一点遇到了这个确切的错误。