gpt4 book ai didi

javascript - 覆盖 subview 中的自定义属性

转载 作者:行者123 更新时间:2023-12-03 05:47:39 24 4
gpt4 key购买 nike

我有一个基本 View 和一个使用名为“menu”的属性扩展基本 View 的 subview 。我尝试了以下方法。

var baseView=Backbone.View.extend({
menu:"#base-menu",
initialize:function(){
//some code
},
render:function(){
console.log(this.menu);
}
});
var childView=baseView.extend({
initialize:function(){
baseView.prototype.initialize.apply(this);
this.menu="#child-menu";
}
});

但是childView.render()不会输出#child-menu,它仅设置为#base-menu。为什么以及如何给 child 买一套?

注意:有多个 subview 。

var baseView = Backbone.View.extend({
menu: "#base-menu",
initialize: function() {
console.log(this.menu);
},

});

var firstView = baseView.extend({
initialize: function() {
baseView.prototype.initialize.apply(this, arguments);
this.menu = "#child-menu";
console.log(this.menu);

}
});

var firstViewInstance = new firstView();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>

最佳答案

要使用 Backbone 的 extend 覆盖父“类”的属性,只需再次设置该属性即可:

var BaseView = Backbone.View.extend({
menu: "#base-menu",
initialize: function() {
console.log("Base", this.menu);
},

});

var ChildView = BaseView.extend({
menu: "#child-menu", // override directly here
initialize : function(options) {
ChildView.__super__.initialize.apply(this, arguments);
console.log("Child", this.menu);
}
});

创建 subview :

var child = new ChildView();

应该输出

Base #base-menu
Child #child-menu

关于javascript - 覆盖 subview 中的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com