我正在尝试在Javascript中创建一个控制器,它将响应按钮点击并相应地更改视图。
我有一个看起来像这样的功能:
document.getElementById("reset").onclick = function () {
//do something
};
然而,当我尝试将该函数放在一个控制器对象中时,我得到了一个"意外的令牌"错误:
var controller = {
this.reset = document.getElementById("reset").onclick = function () {
//do something
};
}
我不确定两件事:
感谢。
答案 0 :(得分:2)
这不是一个有效的Javascript对象结构,但如果它适用于你,你可以在下面进行
var controller = {
reset : function () {
document.getElementById("reset").onclick = function(){
//do your work here
}
}
}
逻辑完全取决于你/开发者他/她想要处理的事情。
或者你可以在外面做绑定的事情,比如,
var controller = {
reset : function () {
//what to do to rsest
}
}
然后将其绑定到别处
//when to run reset method
document.getElementById("reset").onclick = controller.reset;
答案 1 :(得分:2)
错误是由于对象不能被声明,有不同的方法:
var obj1 = {
a : function() {
console.log('obj1');
}
};
var obj2 = function() {
var b = function() {
console.log('obj2');
};
return {
a: b
}
};
var obj3 = function() {
this.a = function() {
console.log('obj3');
}
};
然后使用它。
obj1.a; //prints obj1
obj2().a; //prints obj2
new obj3().a; //prints obj3.
关于如何构建对象是基于意见的,但我喜欢这样做。
var Controller = function() {
this.attachEvents = function() {
document.getElementById("reset").onclick = reset;
}
var reset = function() {
console.log('reset');
};
}
new Controller().attachEvents();
另一种选择是..
var Controller = function() {
this.reset = function() {
console.log('reset');
};
}
var controller = new Controller();
document.getElementById("reset").onclick = controller.reset;