Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当顶级变量发生变化时,JSViews双向绑定更新内部数组

当顶级变量发生变化时,JSViews双向绑定更新内部数组
EN

Stack Overflow用户
提问于 2017-07-15 14:32:41
回答 1查看 169关注 0票数 0

我正在尝试将这个敲除代码转换为JSViews:here

我可以让它在第一次迭代中工作,但单击颜色不会更新数组,因此不会添加'js-active‘类。我知道原因是因为我没有观察到这种变化,但我似乎看不出如何将两者联系起来。

我将这两个单独的ko.observbles合并为一个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var colorPickerData = {
selectedColor: "Red",

materialColors: [
    {
        color: "Red",
        variations: [
            {
                weight: 50,
                hex: "#FFEBEE"
....

下面是模板:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <script id="color-picker-template" type="text/x-jsrender">
    <div class="material-color-picker">
        <div class="material-color-picker__left-panel">
            <ol class="color-selector"> 
                {^{for materialColors ~paletteColor=selectedColor }}
                <li>
                    <input name="material-color" type="radio" data-link="id{:'materialColor' + #getIndex() } checked{:~paletteColor} value{:color}">
                    <label data-link="for{:'materialColor' + #getIndex()} title{:color} css-color{:variations[4].hex }"></label>
                </li>
                {{/for}}
            </ol>
        </div>
        <div class="material-color-picker__right-panel">
           {^{for materialColors ~paletteColor=selectedColor}}
            <div data-link="class{:(color == ~paletteColor)? 'js-active color-palette-wrapper': 'color-palette-wrapper' }">

                <h5 class="color-palette-header" data-link="text{:color}"></h5>
                <ol class="color-palette">
                    {^{for variations}}
                    <li id="clipboardItem" class="color-palette__item" data-link="data-clipboard-text{:hex } css-background-color{:hex }">
                        <span data-link="text{:weight}"></span>
                        <span data-link="text{:hex}"></span>

                    </li>
                    {{/for}}
                </ol>

            </div>
            {{/for}}
        </div>
    </div>

链接代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.templates("#color-picker-template").link("#color-wrapper", colorPickerData, true);

谁能告诉我如何观察selectedColor的变化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-16 18:08:28

我派生了你的CodePen here并完成了到JsViews的移植。

我简化了一些数据链接标记,以降低不必要的数据绑定的性能成本。

对于您关于双向绑定到单选按钮的问题:

你可以做到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{^{radiogroup selectedColor}}
  {{for materialColors}}
    <li>
        <input name="material-color" id="materialColor{{:#index}}" value="{{:color}}" type="radio" />
        <label ...></label>
    </li>
  {{/for}}
{{/radiogroup}}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{{for materialColors ~paletteColor=selectedColor}}
  <li>
    <input name="material-color" id="materialColor{{:#index}}" value="{{:color}}" type="radio" data-link="~paletteColor"/>
    <label ...></label>
  </li>
{{/for}}

或者-如果您保持完整的数据链接方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input name="material-color" type="radio" data-link="id{:'materialColor' + #getIndex() } value{:color} {:~paletteColor:}">

参见{{radiogroup}}Data-linked radio buttons

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45119314

复制
相关文章
数组双向绑定的简单分享
本文主要是摘录《vuejs权威指南》部分的相关解读,我们都知道vue对数据支持双向绑定,对数组也是支持的,但是其在官网有明确说明,对于数组通过 对象.语法来修改其值得是无法监听到的,可以通过this.$set方法来实现。另外其也推荐了一系列的数组可监听到的方法能够支持双向绑定。
RobinsonZhang
2018/08/28
6520
VUE组件封装_vue组件内部双向绑定
官方:一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件。
全栈程序员站长
2022/11/09
8390
VUE组件封装_vue组件内部双向绑定
vuex -- 数组对象的“双向数据绑定”
vuex不允许在组件内部直接修改共享数据,需要在mutations中修改数据,所以涉及到双向绑定不能使用v-model
且陶陶
2023/04/12
1.2K0
vuex -- 数组对象的“双向数据绑定”
vue双向绑定失效_vue热更新失效
然后呢要是,实现数据的双向绑定,首先要对数据进行劫持监听,因为写的代码没有被监听到,所以只能手动set
全栈程序员站长
2022/10/05
8710
当使用 jquery 插件操作 input 时同步 vue 中绑定的变量办法
为什么要同步到 vue 上绑定的变量呢,因为如果我们不更新绑定的变量的值,vue 下次刷新组件的时候,就会将旧的值更新到 input 上。
前Thoughtworks-杨焱
2022/02/19
1.7K0
VueX-数组对象的双向数据绑定
Vuex不允许在组件内部直接修改共享数据,需要在mutations中修改数据,所以涉及到双向绑定不能使用v-model
小城故事
2023/03/10
7890
VueX-数组对象的双向数据绑定
vue的双向绑定原理_数据双向绑定原理
从开始学习前端到现在走在进入中高级前端开发的路上,觉得上手容易又简单的就是Vue框架,包含其相关的生态系统。一直只是简单了解双向绑定的原理,并没有手动去实现或者去拜读过源码。而vue双向绑定基本是面试必考项,通过这段时间的学习,输出以下双向绑定的简单实现示例。
全栈程序员站长
2022/11/10
1.6K0
vue的双向绑定原理_数据双向绑定原理
双向数据绑定
v-model可以实现双向数据绑定,这是极其有用的功能,但仅用于表单元素。 先上效果图: 双向数据绑定.gif 具体代码 结合watch监听,v-model可以实现很多丰富的前端表单交互功能 双向绑定
章鱼喵
2018/07/04
1.5K0
vue双向数据绑定原理面试_vue双向绑定原理
vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
全栈程序员站长
2022/11/02
1.2K0
vue的双向绑定原理及实现_vue双向绑定指令
以往的MVC模式是单向绑定,即Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新
全栈程序员站长
2022/11/07
1K0
vue双向绑定原理
Vue双向绑定的原理 一、在讲vue双向绑定之前我们需要来了解下MVVM模式 MVVM(Model-View-ViewModel)是对 MVC(Model-View-Control)和 MVP(Model-View-Presenter)的进一步改进。
超级小可爱
2023/10/13
1910
vue双向绑定原理
vue双向绑定指令[通俗易懂]
v-model:双向绑定,既有数据源到页面,也有页面到数据源,在不操作DOM的前提下,快速获取表单的数据(v-bind是单向绑定,只有数据源到页面)
全栈程序员站长
2022/10/05
6450
vue双向绑定指令[通俗易懂]
Silverlight:双向绑定综合应用-自动更新集合汇总字段
场景:有一家公司(类名:Company),它有N多员工(类名:Employee)。要在界面上用网格显示所有员工的姓名、工资,并且当操作用户在网格里对员工进行增减或修改其工资时,能自动汇总出员工工资的总和并显示出来。 员工类 Employee代码如下: /// <summary> /// 员工类 /// </summary> public class Employee:INotifyPropertyChanged { private s
菩提树下的杨过
2018/01/23
9730
Silverlight:双向绑定综合应用-自动更新集合汇总字段
四.双向数据绑定
本文最后更新于 872 天前,其中的信息可能已经有所发展或是发生改变。 v-model双向数据绑定 只适用于表单元素(input,select,checkbox,textarea) <input type="text" v-model="msg" style="width: 80%;"> ---- image.png ---- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport
Yuyy
2022/06/28
6570
四.双向数据绑定
Vue双向绑定原理
vue数据的双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。其核心就是通过Object.defineProperty()方法设置set和get函数来实现数据的劫持,在数据变化时发布消息给订阅者,触发相应的监听回调。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
全栈程序员站长
2022/11/02
6950
Vue双向绑定原理
vue双向数据绑定
我之前一直以为vue的双向数据绑定只有在视图中显式使用了才会进行视图的更新,今天发现当在某个方法中使用到某个变量时,该变量改变之后,会重新调用该方法,例子如下:
Theone67
2019/11/21
1.1K0
vue双向绑定原理
vue数据的双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。其核心就是通过Object.defineProperty()方法设置set和get函数来实现数据的劫持,在数据变化时发布消息给订阅者,触发相应的监听回调。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变。
心念
2023/01/11
5800
【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )
将 数据模型 Model 中的 指定 Field 字段 绑定到 View 视图中的组件 ,
韩曙亮
2023/04/24
1.4K0
【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )
vue的双向绑定原理_vue的双向绑定原理及实现
首先我觉得理解vue双向绑定原理应该要有略懂一下发布订阅者模式,我略带过一下。与观察者模式不同的是,发布订阅者多了一个中间调度中心而已。下面给两个比较好的例子
全栈程序员站长
2022/11/02
9430
vue的双向绑定原理_vue中数据双向绑定的原理
这里的vm 就是vue框架,它相当于中间枢纽的作用,连接着model 和view.
全栈程序员站长
2022/11/19
2K0
vue的双向绑定原理_vue中数据双向绑定的原理

相似问题

JsViews :双向绑定问题

13

当推到数组内部时失去双向绑定(角2)

10

JSViews双向绑定不使用数据采集器

11

在jsViews中使用双向数据绑定进行验证

40

当整个对象发生变化时保持双向绑定

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文