首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Jsview助手不再对可观察更新(Array)进行更新

Jsview助手不再对可观察更新(Array)进行更新
EN

Stack Overflow用户
提问于 2014-01-21 09:06:30
回答 1查看 773关注 0票数 0

在提交48 (Beta候选)之后,我不能再获得可观察的数组逻辑了。我知道一切都变了。我已经阅读了变更,玩了一段时间的新提交,但无法使它发挥作用。帮手们只是不再更新了。任何帮助都很感激。

下面是一个简单的例子。单击“添加朋友”应再次调用friends_names。但现在不是了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery.js"></script>
  <script src="http://www.jsviews.com/download/jsviews.js"></script>
</head>
<body>

<div id="people"></div>

<script id="peopleTemplate" type="text/x-jsrender">
  <button id="add">Add person</button><br />
  {^{for people}}
   <div>
        Name: {{>name}}, 
        Friends: <span data-link="html{:~friends_names(#data.friends)}"></span>

        <button class="friend-add">add friend</button>
   </div>
  {{/for}}
</script>

<script>
var data = {
  people: [
    {
      name: "Adams",
      friends: [
        {name:'Petere'}, 
        {name:'Steve'}
      ]
    },
    {
      name: "Eugenia",
      friends: [
        {name:'Bob'}
      ]
    }
  ]
};

$.templates({ 
  peopleTmpl: "#peopleTemplate"
});

var friends_names = function(friends){
        friends = friends || []
        var names = []
        for (var i=0, l=friends.length; i<l; i++) {
            names.push(friends[i].name);
        }
        return '<b>' + names.join(', ') + '</b>';
    };

$.views.helpers({friends_names:friends_names});

$.templates.peopleTmpl.link("#people", data);

//debug
$.observable(data).observeAll(function (ev, obj) { console.log('change', obj); });

$("#add").on("click", function() {

  $.observable(data.people).insert({
    name: "Amos",
    friends: []
  });
})

$('#people').on('click', '.friend-add', function(e){
    e.preventDefault();

    var name = 'Some anonymous friend' + Math.floor((Math.random()*100)+1);

    var friends = $.view(this).data.friends;
    $.observable(friends).insert({
        name: name
    });
});

</script>
</body>
</html>

我知道可以使用嵌套模板(不确定它是否能解决问题),但在实际应用程序中,helper中有更多的逻辑,因此嵌套模板不会有帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-21 17:32:57

是的,这是故意的:参见提交说明:

  • 数据链接到数组是简化和更一致的。现在,标签不会自动绑定到数组,并在数组更新时刷新。{^{myTag路径. to.array /}现在将在to.array属性被更新时更新(属性更改),而不是当to.array本身发生明显变化时更新。(数组更改)。标签应该选择通过从"for“标记派生(如'range‘示例:http://www.jsviews.com/#samples/tag-controls/range中的)派生,或者按照使用onAfterLink和onDispose添加/删除onArrayChange处理程序的方式进行数组绑定,如在JsViews单元测试中的{^{myWidget ./}示例中那样。这一变化与https://github.com/BorisMoore/jsviews/issues/158有关

这里有一个非常简单的解决方法。如果您将array.length作为参数(即使您的助手函数不使用它),那么JsViews将响应数组长度的更改(这是属性更改,而不是数组更改),并将触发助手的刷新:~friends_names(朋友,~friends_names)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  {^{for people}}
   <div>
        Name: {{>name}}, 
        Friends: <span data-link="html{:~friends_names(friends, friends.length)}"></span>

        <button class="friend-add">add friend</button>
   </div>
  {{/for}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21264603

复制
相关文章
Windows和Linux VPS/GDrive之间文件夹的实时单向/双向同步教程
说明:一般我们同步Windows和Linux之间的文件时,常用的方法有nfs挂载,inotify + rsync同步等,有钱的或许会买成熟的storenext系统,当然后者基本上都是公司在用,storenext由于价格太贵,个人使用基本可以无视,而nfs由于兼容性问题,在实际挂载中会出现很多小问题,算是inotify + rsync使用的比较多,不过鉴于前两天水过一篇Mutagen,博主发现用来实现Windows和Linux VPS之间双向同步的时候,速度还行,资源占用都不算很大,这里就大致水下使用方法,顺便也可以结合下Rclone,间接实现不挂梯子达到Windows和Gdrive双向同步的目的。
用户8851537
2021/07/31
2.1K0
linux和windows之间传递文件
依赖于pscp文件,而windows系统下,一般没有安装。所以,需要先安装pscp应用程序。 pscp 下载pscp 放入windows的system32 文件夹下; 传送文件 windows从ubuntu服务器下载文件 背景一:假设要将ubuntu服务器下的/home/fresh/finalproject.tar下载windows下E:盘下,假设linux机器的端口是22,用户名是:fresh; 解决方法: 在Windows的cmd中输入 pscp -P 22 fresh@serverIP:/ho
用户1631856
2018/07/03
1.7K0
Windows、Linux之间传输文件的几种方式
常见的文件传输协议有ftp、sftp,sftp就是在ftp的基础上对传输的数据进行了加密。
用户1685462
2021/07/27
12.9K0
rsync实现服务器之间同步目录文件
需求:将192.168.1.10的/opt/vue/index.html文件 和 /opt/vue/static目录同步到远程192.168.1.130的/opt/dist目录下
陈灬大灬海
2019/12/20
2.8K0
rsync实现服务器之间同步目录文件
Linux与windows之间文件传输
本文介绍了Linux与windows之间文件传输的两种方法:通过SecureCRT使用rz、sz命令进行上传、下载文件;使用scp命令进行文件复制。同时介绍了SecureCRT的sftp功能,通过get、put命令实现文件的上传、下载。
程序新视界
2018/01/08
4K0
Linux:使用Syncthing在服务器之间同步文件
Syncthing 比 NFS 或 Samba 更易于设置和使用,是在需要保持机器之间数据持续同步的情况下,您的不二之选。
云云众生s
2024/10/17
2960
Linux:使用Syncthing在服务器之间同步文件
wsus无法同步计算机,Windows Update无法与WSUS同步,8024401c「建议收藏」
WSUS环境是windows server 2016,客户端有server 16和win10 1809,
全栈程序员站长
2022/07/02
1.1K0
python多线程之间的同步(一)
       线程之间经常需要协同工作,通过某种技术,让一个线程访问某些数据时,其它线程不能访问这些数据,直到该线程完成对数据的操作。这些技术包括临界区(Critical Section),互斥量(Mutex),信号量(Semaphore),事件Event等。
py3study
2020/01/06
5380
多线程之间实现同步
当多个线程同时共享 ,同一个全局变量或静态变量,在做写的操作时,可能会发生数据冲突问题。
斯文的程序
2019/11/07
6220
多线程之间实现同步
Linux和windows之间文件传输解决方案
我们初学Linux时,经常会在windows下载软件或者文档,然后想办法从windows上传输到Linux上;还有Linux上的文件,我们想再Windows上储存,这时,就会用到Linux和windows之间文件传输!!
破晓的历程
2024/06/24
3130
Linux和windows之间文件传输解决方案
JVM与计算机之间的关系
计算机内存硬件架构 [image-20201224230943962] CPU,一台现代计算机拥有两个或多个CPU,其中一些CPU还有多核,从这一点可以看出,在一个有两个或多个CPU的现代计算机上,同时运行多个线程是非常有可能的,而且每个CPU在某一个时刻,运行一个线程是肯定没有问题的,这意味着,如果Java程序是多线程的,在Java程序中,每个CPU上一个线程是可能同时并发执行的。 CPU Refisters(寄存器),每个CPU都包含一系列的寄存器,它们是CPU内存的基础,CPU在寄存器中执行操作的速度
开源日记
2021/01/05
8910
Linux vs windows 他们之间的区别
Linux的操作一起皆文件,Linux将所有的设备、文件、进程等都当做文件来处理,统一了对它们的操作方法,使得Linux具有了很高的灵活性和可扩展性。
网络豆
2023/10/17
1.2K0
Linux vs windows 他们之间的区别
Eureka Server之间的注册表信息同步
前言 Eureka 作为一个服务注册中心,Eureka Server必然是可以通过集群的方式进行部署,但是分布式系统中一个很关键的点就是数据的一致性,多节点部署的Eureka Server必然涉及到不
aoho求索
2018/04/03
3.3K0
Eureka Server之间的注册表信息同步
在Linux和Windows XP之间使用FTP来互传文件
在Linux和Windows XP之间使用FTP来互传文件,今天第一次付诸于行动,发现其实很简单,跟我们正常的两台Windows XP系统的机器之间使用FTP基本一样。我是用虚拟机装了Linux,真实系统是Windows XP,在Windows XP下用Serv-u软件架设了FTP服务器,然后我们就可以在虚拟机的Linux下登录该FTP服务器下载或上传文件了,不同的仅是在Linux下是在命令行里输入相关FTP命令来完成的,应该也有像FlashFXP、CuteFTP这一类的Linux专用软件,不过我孤陋寡闻,不了解,也就不误人子弟了。
星哥玩云
2022/06/11
2.2K0
文件 与 链表的同步
     这是文件与之前的链表结合使用,可以从文件中看数据读出来,形成一条链表,同时也可以把链表的数据写入文件中
全栈程序员站长
2021/08/12
4660
rsync自动同步_文件实时同步
  rsync(Remote Sync,远程同步)是一款开源的快速增量备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。 支持本地复制,或者与其他 SSH、rsync 主机同步。 官方网站:http://rsync.samba.org
全栈程序员站长
2022/11/04
4.4K0
rsync自动同步_文件实时同步
文件同步rsync
rsync 远程同步 rsync(remote sync) 备份 完全备份 增量备份(差异备份) rsync 优点: 支持增量备份 选择性保持:符号链接,硬链接,文件属性,权限及时间等。 传输前执行压缩,适合于异地备份,镜像服务器等应用。 使用ssh作为传输端口,sftp,ssh,xshell 。 与scp区别: 当文件数据很大时候: scp 的效率太低,(scp是先统计信息,需要多少空间后,在复制) rsync 边复制,边比较,边统计 基础知识 端口:873 模式: 如果直接使用命令
若与
2018/04/25
3.8K0
文件同步rsync
windows下mysql 主从同步
两台电脑,都安装好mysql 5.5及以上版本,最好两台电脑都安装同一版本数据库,且能单独正常使用
肖哥哥
2019/02/22
2K0
python windows系统时间同步
#!/usr/bin/env python # coding: utf8 # Usage: 指定ntpserver域名到ntpserver_domains变量即可 import socket import struct import time import win32api import subprocess import os import sys def gettime(ntpserver_ips):     TIME_1970 = 2208988800L     client = socket
py3study
2020/01/07
3K0
windows日历与苹果同步
先打开Apple ID的登陆界面,通过双重验证,输入手机的验证码,然后登陆,找到安全-App 专用密码,选择“生成密码”, 输入密码标签,然后官网就会给你一个密码。将这个密码复制下来(不是你原来登陆i
似水的流年
2021/05/27
3.4K0

相似问题

选择单选按钮后,如何隐藏/禁用单选按钮

21

单选按钮选择A更新单选按钮B

13

如何强制更新Webix数据表中的单选按钮

10

在从另一组中选择单选按钮时自动选择单选按钮

30

选择单选按钮& <span>更新

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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