2012-12-04 125 views
1

我目前正在尝试构建自己的JS框架作为学习的方式。我创建了一个制备方法,像这样的新模式:如何重新绑定变量赋值

var myModel = new $n.model.make({ 
    data: { 
     id: _contentID, 
     name: $('#frm_content_name').val() 
    }, 
    route: '/my/path', 
    callback: function(){} 
}); 

本作()函数是简单的:

$n.model.make = function(obj){ 

    var self = this; 

    self.data = obj.data; 
    self.route = obj.route; 
    self.callback = obj.callback; 

} 

正如你所看到的,名称参数被分配到一个表单输入字段的值。如果我在UI上更改此输入字段值,名称参数仍将分配给输入字段的原始值,所以如果我尝试将数据保存到数据库,则没有任何更改。

一旦我建立了我的模型,有什么方法可以将数据参数“重新绑定”到指定的表单域以获取最新信息?

+1

为什么不把你的对象属性设置为引用字段本身,然后在需要时检索它的值? – nnnnnn

+0

我可能有20个或更多的表单字段在模型中被引用。当我在通用的saveData()函数中有数据定义时它会更容易,并且它会在保存之前进行绑定。在我看来,拥有一个专用的模型只会让事情复杂化,除非我忽略了这一点。 – Freddie

回答

0

正如在评论中提到,你可以这样做:

data: { 
    id: _contentID, 
    name: function() { 
     return $('#frm_content_name').val(); 
    } 
}, 

调用data.name()将始终获取最新信息。另一种方法是:

data { 
    id: _contentID, 
    name: $('#frm_content_name') 
}, 

现在您需要致电data.name.val();我个人不太喜欢这个,因为缺少封装。