当前位置: 首页 > 知识库问答 >
问题:

主干无法读取主干视图中未定义错误的属性“property”

葛深
2023-03-14

我刚决定学骨气。我在看视频教程。这里的一切都很好,但在我的末尾,我遇到了一个错误“Uncaught TypeError:无法读取未定义的属性'name'。

这是我的代码:


    var MenuItemDetails = Backbone.View.extend({
        render: function() {
            var markup = this.options.name + this.options.category + this.options.imagepath;
            // I also had some html markup in the string above, of course, but I've striped it because stackoverflow didn't show it in the preview of my post.
            this.$el.html(markup);
            return this;
        }
    });

    var AppRouter = Backbone.Router.extend({
        routes: {
            "" : "list",
            "menu-items/new" : "itemForm",
            "menu-items/:item" : "itemDetails"
        },

        list: function() {
            $('#app').html('List screen');
        },

        itemDetails: function(item) {
            var view = new MenuItemDetails({ name: item, category: 'Some category', imagepath: 'no-image.jpg' });
            $('#app').html(view.render().el);
        },

        itemForm: function() {
            $('#app').html('New item form');
        }
    });

    var app = new AppRouter();

    $(function() {
        Backbone.history.start();
    });

“项目详细信息”函数给出了“未捕获的TypeError:无法读取未定义的属性“名称”错误。当然,如果我在视图中不使用“名称”属性,我会得到“未捕获的TypeError:无法读取未定义的属性“类别”。在我跟随的视频教程中,一切正常(它使用的是Backbonejs的0.9.1版)。我使用最新的(1.1.0)。

有人知道我为什么会出现这个错误吗?没有任何拼写错误,一切都在正确的顺序(就像在视频教程中一样,它是有效的)。为什么主干会给我这个错误?

共有1个答案

弘康安
2023-03-14

主干视图用于自动将构造函数选项复制到中。选项但不再是:

更改日志
1.1.0-2013年10月10日

  • 主干视图不再自动附加作为this传递给构造函数的选项。选项,但如果愿意,您可以自己做

所以如果你依赖于这个。选项在视图中设置后,您必须自己执行:

var MenuItemDetails = Backbone.View.extend({
    initialize: function(options) {
        this.options = options;
    },
    //...
});

或者更好的方法是,解压缩选项,以便了解视图的界面:

initialize: function(options) {
    this.options = _(options).pick('name', 'category', 'imagepath');
}

这样,您至少可以在选项中看到一个列表。

 类似资料:
  • 我想在我的角度项目中添加钢系列。我有createad html-compass组件,但我收到了这个错误: _services错误类型错误:无法读取未定义的属性(读取主题)在ProjectService…/app/Subject.js:53/_next(node_modules)在_esm5__tryOrUnsub[EventEmitter.push.](node_modules)在_esm5…/c

  • 问题内容: 我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议? 问题答案: 您应该绑定该函数。您收到此错误的原因是,在handleChange函数中,键盘操作未引用React类的上下文,因此您需要绑定该函数。 看到这个答案

  • 我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误: "(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59" 我还在学习jQuery,不能解决这个问题。

  • 问题内容: 我正在使用jQuery将表单字段发布到PHP文件,该文件仅根据是否工作而返回1/0。 代码摘录: 但是,每次成功(html == 1)时,控制台都会引发错误“未捕获的TypeError:无法读取未定义的属性’defaultView’”,并且警报永远不会发生…? Google似乎没有关于此错误和jQuery的大量信息,谁知道原因? 问题答案: 这是因为以前不是您要处理的内容,现在是jQu

  • 我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise

  • 我正在尝试集成一个Datatable插件(https://www.npmjs.com/package/vuejs-datatable)在我的Vue应用程序中,我的控制台出现了一个错误。 我的dataTable.vue文件: 每当我尝试使用Vue时。使用(PluginName)'当集成插件时,我会遇到类似的错误。我是VueJS的新手。有什么我需要做的吗?