繁体   English   中英

Rivet.js 中的双向绑定器

[英]Two-way Binders in Rivet.js

我在 rivets.js 中创建了一个活页夹,它绑定到给定模型中元素的多个属性。因为我想在 JavaScript 中为我的模型对象使用一个活页夹。

//Model 
var login = {
         test1 : {text:"myData1",color:"myColor1"},
         test2 : {text:"myData2",color:"myColor2"}
        }

//My Custom Binder
rivets.binders.customize= function(el, value) {
  el.style.color = value.color;
  el.text = value.text;
}

//html
<a rv-customize='login.test1'></a>

我还将登录模型绑定到 UI 页面,我也希望 Dom 更新。

//#myDOM => login
rivets.bind($('#myPage'), {login: login}) 

现在我使用带有几个输入标签的表单来修改不在当前上下文中的模型,我的意思是我将login.test1单独绑定到该表单。

//#myForm => login.test1
rivets.bind($('#myForm'), {model: login.test1}) 

//#myForm 
<form>
//...
<input rv-value='model.color' type='text'/>
<input rv-value='model.text' type='text'/>
//...
</form>

当我更改上述表单输入中的输入时,模型会更改并反映在login object 中 但同样没有反映在 DOM 或 UI 中。

如果我采用相同的场景并且只绑定一个像下面这样的单个属性,那么流程工作正常,从输入到模型的任何更改都会反映在 DOM 中。

rivets.binders.color = function(el, value) {
  el.style.color = value
}

我错过了什么吗? 这种具有多个属性绑定的绑定器是否可能? 我需要做任何额外的配置吗?

由于您传入的是您感兴趣的两个属性的父对象,因此您必须使用与计算属性类似的技术,如 rivets.js手册中所述 像这样:

<a rv-customize='login.test1<test1.text test1.color'></a>

这会告诉铆钉在文本或颜色发生变化时更新您的活页夹。

工作小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM