问题标签 [observable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
knockout.js - 淘汰 observableArray push - 不推送到数组
尝试玩 Knockout,但我在推送到可观察数组时遇到问题。我下面的代码通过单击按钮从服务器获取一些 json 数据,它返回一个对象数组。第一个 console.log 控制台很好,我的对象数组很好而且花花公子。
但是,我似乎无法将每个对象都推送到我的可观察数组上。控制台向我显示空数组。我已经尝试了几种变体,但感觉我只是错过了一些简单的东西,但我很难找到它。
我想要做的是从服务器加载一些数据,把它放在一个可观察的数组中,我可以绑定到模板并执行类似 foreach 的操作来输出数组的内容。
data-binding - 不确定如何在 observableArray 中管理我的数据以进行更新
我刚开始玩 KO,因为我想把它带入一个即将到来的项目中。在业余时间,我一直在工作中使用 Web 服务,这基本上是从对数据做一些事情开始,然后再做一些其他事情。所以首先我只是返回了一个药物名称列表。好的,让我们添加返回结果的计数。好的,让我们在模态中填充各个药物的详细信息。好的,让我们编辑一个药物名称。没有真正的韵律或理由,只是想出一些东西并玩弄KO。
我现在不确定如何真正管理我的数据,因此它会随处更新。我制作了一个屏幕截图,引导您了解我所拥有的并说明问题。
- 单击“y”按钮获取我的搜索结果。然后我选择“Yasmin 28”药物
- 我在模态窗口中获得该药物的详细视图
- 我编辑药物名称并单击“保存”按钮
- 药物名称在模态窗口中更新
- 我“作弊”并更新搜索结果中的药物名称,方法是爬取 DOM 的那部分并将旧的药物名称替换为新的药物名称。
问题是,它没有利用 KO 的可观察性......如果我关闭模态并再次单击“Yasmin 28”药物链接,模态将显示“Yasmin 28”而不是我只是将其更改为(“很棒的东西”)。
我不太确定如何跟踪我的 observableArray 中的属性是否发生变化。我做了两个 observableArrays,一个保存搜索结果的药物名称列表,另一个保存药物的详细信息。我还为当前的药物名称做了一个 observable。
有人可以解释我需要做什么来跟踪我的药物名称吗?我已经包含了下面的代码以及我在最底部使用的 JSON。
knockout.js - 有人可以解释如何将两个 observableArrays 重做为一个吗?
使用的数据内嵌在 javascript 面板的顶部。
如果您单击结果面板中的“显示详细信息”链接,您将在表格的列表下方获得与该药物相关的更多数据。如果您点击 drugName 行中的“编辑”,您可以更改该药物名称。如果更改名称,它将反映在数据表和数据表上方的表头中。它不会在结果面板顶部的列表中更新(即不同的 observableArray)。
我不知道如何使用一个 observableArray 来完成这一切。我正在使用 data.preferredDrugs 填充我的drugList oservableArray (这是一个对象数组,然后我使用 foreach: drugList 进行迭代)。如果我只用数据填充它,我不确定如何只迭代preferredDrugs 对象数组。这就是为什么我最终得到了两个 observableArrays - 一个用于药物名称,另一个用于药物详细信息。
我怎样才能使用一个 observableArray 来完成这项工作,所以如果您在表格中编辑药物名称,它会随处反映。
triggers - Knockout.JS:基于 observable 变化的触发器
我有一个输入元素,它绑定到可观察到的淘汰赛:
这会更新每个 keyup 上的 observable。我现在想在值更改时触发其他事件。
原则上执行以下操作:
但是,它似乎有些笨拙。它还会在模板的初始实例化时触发,我只想在此之后处理更改。是否有官方/更简单的方法来根据可观察的变化触发事件?
java - java.util.vector 不能转换为 javax.collections.observablelist
我收到此错误:
java.util.vector 不能转换为 javax.collections.observablelist
尝试使用 List 填充 TableView 时
这是我的代码错误发生在最后一行
我如何将 List 绑定到我的表或将 List 转换为 ObservableList 的正确方法是什么?
knockout.js - Knockout observable 并不总是更新(内有视频链接)
问题视频演示:http ://www.screenr.com/k168
- 我单击“y”按钮从服务器获取一些数据。
- 我单击第一个结果的“显示详细信息”链接 ( y-cof-dmx ) 以显示记录详细信息视图 - 记下药物名称(在模式标题栏/数据表中和控制台下方)。他们都匹配。到目前为止,一切都很好。
- 我单击下一个结果的“显示详细信息”链接(Yasmin 28)。注意模态和控制台中的药物名称。控制台知道当前模型对象,但模式没有更新,它仍然是“旧”结果y-cof-dmx。
- 下一个结果(Yaz)也是如此,仍然在模态中显示“旧”结果。
- 我在模式中编辑药物名称 - 它会在整个 UI 中更新,并在我再次打开模式时反映出来。
我的 observable 正在更新,但并非一直如此。我不确定这是为什么。
我所有的代码都在http://jsfiddle.net/6fm5T/虽然它不会在小提琴中运行。
代码的有趣部分,模态可以找到寻找:
在JS中,有:
我正在尝试更新在 showDetails 上方仅声明几行的 observable:
我正在处理的数据是简单的对象,可以在http://jsfiddle.net/Gm64C/2/的 JavaScript 窗格顶部看到结构(忽略那里的所有其他内容)。
非常感谢任何见解!
我在下面的第一条评论中的更新
以下是我修订的相关部分。在 html 中,我必须调用 drugName 作为函数:
由此:
对此:
这是我用于 jquery UI 对话框的新自定义 KO 绑定:
由此:
对此:
java - 防止对共享资源的并发更新
我有 P 类、Q 类和 R 类相应地更新表 Pt、表 Qt 和表 Rt。P 类可从图形界面 Pi 修改,同样适用于 Qi 和 Ri。
现在有某些数据在 P、Q 和 R 类之间共享。
为此,我们想提醒用户,每当 Pi、Qi、Ri 同时更新数据时,都会显示一条消息(在所有界面上)并冻结屏幕:“此数据正在从其他地方修改,请稍候一段时间。”
我曾想过在这里使用 Observable 模式,这些类 P、Q 和 R 在 Observable 上注册,而 observable 负责并发访问。这是正确的方法吗?
java - MVC - 视图可以观察对象吗?
我试图在使用 Observable 和 Observer 时更好地理解 MVC 结构,我试图通过实现一个比较文件的程序来做到这一点。我希望我的视图显示文件列表和一些统计数据。如何使用不同的数据更新视图?
例如,如果统计信息发生变化,我想将 Statistics 对象发送到视图,以便它可以更新它的显示。但同时,如果文件列表发生变化,我想将 ArrayList 发送到视图,以便它可以更新它的显示。我是否对两者使用相同的更新方法?如果是这样,那么我是否让我的视图查看 instanceof 是什么并相应地显示?
c# - RX,重试并允许处理异常
我正试图把头绕在 RX 周围,但我的大脑在某个地方爆炸了 :)
我想要做的是通过 RX 以异步方式调用 WCF 方法。这里没什么特别的,但是当 WCF 方法抛出错误时,我想重新创建通道并再试一次(最多 3 次)。
到目前为止,我所拥有的是:
我玩弄了Catch<TSource, TException>
,这让我可以捕获异常并继续使用相同的 observable,从而给了我想要的东西。唯一的问题是它永远运行,这意味着如果我继续抛出异常,事情就永远不会停止!
ruby-on-rails - Ruby on Rails:通过控制器操作观察模型变化
update
每当调用控制器中的操作(或每当更新我的模型时),我都想发出服务器发送的事件。我目前watch
在带有虚拟发射器的同一个控制器中有一个工作动作:
如何获得一个在update
被调用时产生/返回值的可枚举对象?(注意:它不一定是一个 Enumerable;但它必须响应#each
这种流技术才能工作。)从某种意义上说,我想我正在尝试在 Rails 中实现一个事件驱动的架构。
我知道Observable但我不知道如何让我的观察者可以根据需要进行枚举......或者如何在没有循环和睡眠计时器的情况下将观察者放入枚举器(如上)。
这样做的目的是将对数据库所做的更改发送给当前登录的所有其他用户,以便每个用户始终拥有数据库的当前反映。
谢谢-