Javascript _.extend不';t将元素正确复制到目标
我刚开始写一个主干库,它是这样的Javascript _.extend不';t将元素正确复制到目标,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我刚开始写一个主干库,它是这样的 (function() { var root = this; if(root && !root.Backbone) { console.log('BackboneJS does not exist!.'); } else { Backbone = root.Backbone; } var Form = Backbone.View.extend({ even
(function() {
var root = this;
if(root && !root.Backbone) {
console.log('BackboneJS does not exist!.');
} else {
Backbone = root.Backbone;
}
var Form = Backbone.View.extend({
events: {
'submit': function(event) {
this.trigger('submit', event);
}
},
initialize: function(options) {
var self = this;
var options = this.options = _.extend(options, {
submitButton: false
});
}
});
Backbone.Form = Form;
})();
$(document).ready(function(){
var myForm = new Backbone.Form({
options: {
hasTopButtons : true,
hasEdit: false,
hasPrint: true
}
});
我通过jQuery(在我的index.html中)这样调用它
(function() {
var root = this;
if(root && !root.Backbone) {
console.log('BackboneJS does not exist!.');
} else {
Backbone = root.Backbone;
}
var Form = Backbone.View.extend({
events: {
'submit': function(event) {
this.trigger('submit', event);
}
},
initialize: function(options) {
var self = this;
var options = this.options = _.extend(options, {
submitButton: false
});
}
});
Backbone.Form = Form;
})();
$(document).ready(function(){
var myForm = new Backbone.Form({
options: {
hasTopButtons : true,
hasEdit: false,
hasPrint: true
}
});
但是,当我使用.extend
函数将附加键浅拷贝到选项
时,在我看来并没有将新键包括到现有的选项
数组中,而是在选项
数组之外创建一个新键,如下所示
(function() {
var root = this;
if(root && !root.Backbone) {
console.log('BackboneJS does not exist!.');
} else {
Backbone = root.Backbone;
}
var Form = Backbone.View.extend({
events: {
'submit': function(event) {
this.trigger('submit', event);
}
},
initialize: function(options) {
var self = this;
var options = this.options = _.extend(options, {
submitButton: false
});
}
});
Backbone.Form = Form;
})();
$(document).ready(function(){
var myForm = new Backbone.Form({
options: {
hasTopButtons : true,
hasEdit: false,
hasPrint: true
}
});
而不是下面的结构
有人能帮我找出这里出了什么问题吗?您错误地调用了函数。你想要:
$(document).ready(function(){
var myForm = new Backbone.Form({
hasTopButtons : true,
hasEdit: false,
hasPrint: true
});
});
代码显式地传递一个对象,该对象具有一个名为“options”的属性
另外,在“initialize”函数中,有一个虚假的var
声明:
var options = this.options = _.extend(options, {
submitButton: false
});
应该是这样的
extend函数修改第一个对象,您可能不想这样处理客户机对象。因此,您可以传入一个新的空对象,而
\uu0.extend()
将浅层复制所有客户端属性到该对象中。您错误地调用了该函数。你想要:
$(document).ready(function(){
var myForm = new Backbone.Form({
hasTopButtons : true,
hasEdit: false,
hasPrint: true
});
});
代码显式地传递一个对象,该对象具有一个名为“options”的属性
另外,在“initialize”函数中,有一个虚假的var
声明:
var options = this.options = _.extend(options, {
submitButton: false
});
应该是这样的
extend函数修改第一个对象,您可能不想这样处理客户机对象。因此,您可以传入一个新的空对象,而
\uu0.extend()
将浅层复制所有客户端属性到其中。My bad!。你在@Pointy!上的位置是正确的。:-)我的错!。你在@Pointy!上的位置是正确的。:-)