在Javascript中耦合视图和控制器

时间:2014-06-19 07:16:39

标签: javascript jquery view controller

首先,我有一个关于耦合两个输入元素的非常基本的问题。在我的例子中,它是一个Slider和一个输入元素:

<div class="userInput">
    <input id="slider" type="range" min="0" max="100"/>
    <input id="number" type="number" max="100"/>
</div>

JS:

$('#slider').corresponding = $('#number');
$('#number').corresponding = $('#slider');
$('#slider').onchange(function(){this.corresponding.value = this.value;});
$('#number').onchange(function(){this.corresponding.value = this.value;});

所以这对我有用,但在我看来也像是一个肮脏的黑客,扩展了jQuery对象。将控制器附加到jQuery Objects时,糟糕的感觉甚至会增长:

var MYController = new Controller();
$('#slider').controller = MYController;
$('#slider').onchange(function(){
    this.corresponding.value = this.value; 
    this.controller.sliderChange(this.value);
});

我很感激任何建议如何做到这一点&#34;正确的方式&#34;。我还无法找到更好的方法,因为我有大量不断变化的用户输入,每个都需要自己的控制器对象,保存在我的Mastercontroller类的数组中。

1 个答案:

答案 0 :(得分:0)

也许您可以将所有输入放在jsp中的<form></form>标记内,然后调用表单提交事件或serialize事件。使用后者(序列化存储在按钮上的任何值都不会被存储,并且它也需要jsp标签中的name属性,因此可以提交是更好的选择)。

//jsp page
<form id="myForm" >
<input type="text" value="Enter here">
<input type="submit" value="Submit">
</form>

//js call
( "#myForm" ).submit(function( event ) {
// call the controller
});