问题标签 [computed-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.

0 投票
0 回答
222 浏览

javascript - ko.computed 不评估依赖值何时发生变化

我创建了这个小提琴http://jsfiddle.net/mj9f9/4/

该视图不会更新“搜索”和“创建”按钮的启用状态。只有当用户选择产品类别时才会发生这种情况,但当用户更改组件的值时也必须发生这种情况。

该视图是一个搜索视图,使用户能够搜索由依赖于所选产品类别的组件标识的产品。

视图模型:

问题在于按钮搜索和创建。第一个由涉及多个可观察对象的计算函数启用或禁用,但我感兴趣的是 ComponentValueModel.Value 类的组件的值:

我希望启用或禁用此按钮的代码在 ProductViewModel.canSearch 计算函数中定义:

好像 ko 没有通知 observable component.Value 中值的变化。任何帮助将不胜感激。

0 投票
2 回答
1503 浏览

javascript - 淘汰计算的可观察写入不适用于包含原子可观察的普通对象

我从这样的简单可观察对象创建了一个计算的可观察对象:

  • this.fullDetails 是计算出来的 observable。
  • this.computeFullDetails 是计算的读取函数。
  • this.writeToComponents 是计算的写入函数。

当我修改与原子可观察对象对应的输入框时,计算属性会被修改,但是当我修改计算属性时,原子属性不会更新。我可以用另一种方法来完成这样的事情吗?

请看这个小提琴http://jsfiddle.net/saurabh0jha/wqpZ9/

HTML

0 投票
2 回答
455 浏览

javascript - 淘汰赛js计算没有被解雇

该代码可以在http://jsfiddle.net/6kMWM/10/上找到。

在 FilterViewModel 中,我正在创建一个可观察对象。

然后在 BankViewModel 中,我正在运行一个计算方法,当任何输入框发生更改时,它都应该触发。

由于某种原因,它没有被解雇。任何人都可以帮助我。

谢谢你在先进

0 投票
2 回答
1491 浏览

knockout.js - knockoutjs child object trigger change in parent computed

Is there an easier way to get a parent object's 'subscribe' to fire with changes to any of the lower level observables?

The following code and sample fiddle are working, but it requires me to duplicate my masterOptions in optionSet. This smaller version is manageable, but my masterOptions set can become quite large which will make maintenance of both masterOptions and optionSet difficult and error-prone.

Sample jsfiddle found here: fiddle

html:

Script:

I would rather NOT have to recreate the masterOptions as optionSet, but I don't see how I can have a single subscribe fire when any of the lower level observables change.

0 投票
1 回答
200 浏览

javascript - 敲除修改 Computed 内的 ObservableArray

我正在尝试解决我有两种方式计算的 observable 并希望将其解析为 observable 数组并使更改事件冒泡的问题。问题是它似乎没有通知订阅者。

它最好在 jsfiddle 中显示:http: //jsfiddle.net/RHhmY/13/

代码在这里:

和html:

我已经尝试了很多事情,包括通知订阅者有问题的 observableArray 并且长度永远不会更新。

另一方面,我非常愿意改变淘汰赛的构建方式,只想要一些有效的东西。

0 投票
1 回答
818 浏览

knockout.js - ko 计算未显示在视图中

我有一些关于绑定到计算值的问题。我在表格中显示数据,并总结了一些字段。在页脚中,我想显示这些字段的总和,以及空列,以及一个带有总计文本的字段。这些值存储在字段内,并在引用字段的值更改时更新,但它不会显示在视图中。我知道我对 ko.computed 做错了什么,但我无法确定那会是什么。

HTML 代码:

在我的 JS 我有

ajax 函数只是 $.ajax 函数的一个小包装器,我们在项目中使用它来获取数据。

此外,makeObservable 用于使对象的字段可观察。正如我发现的那样,所有连接到计算的字段都应该是可观察的,因此可以触发更新。

我不知道发生了什么。足模的可观察字段被打印出来,而计算却没有。clientViewModel.model 可观察数组的所有字段都是可观察的,值被计算出来,但它们不会被打印出来。这是什么原因?

据我所知,一种可能的解决方案可能是触发计算要求和的值并将其存储在可观察字段中的函数,这应该可以打印出来。但我宁愿让它以这种方式工作,并找出导致这种行为的原因。

谢谢。

0 投票
1 回答
313 浏览

knockout.js - 在验证器扩展之前计算出可观察到的淘汰触发器

我有以下场景 - 我有一个属性,它有一个触发验证器的扩展。同样的属性也是依赖/计算 observable 的一部分。我需要在验证器扩展触发之前首先运行计算的 observable,因为它更新了验证器所需的一些值。但是,验证器总是首先触发。

在我的模型中 -

在我计算出的 observable 中——

在我的验证器中 -

0 投票
1 回答
1038 浏览

knockout.js - 我可以绑定到计算的可观察数组(淘汰赛)吗?

我有一些项目的可观察数组(简单的数字对),我想将它绑定到一个表。然后我想绑定一个计算的 observable,它循环第一个数组并通过分组总结一些值。我的 foreach 循环工作正常,并按组汇总数字(正如您通过取消注释我的警报所看到的那样),但它从不绑定到 html。请参阅下面的小提琴。我哪里错了?

和 html

http://jsfiddle.net/gaku6mku/1/

提前感谢您的任何建议!

0 投票
2 回答
1352 浏览

knockout.js - 将 localStorage 包装在可写的计算 observable 中无法破坏缓存

我是 KnockoutJS 的新手,很想知道这是否可能。我正在尝试将本地存储对象包装在可写计算中,以便我可以利用 KnockoutJS 的自动绑定优势。但是,“读取”操作不引用任何可观察对象 - 因此初始值永远不会更新:

我了解这是预期的行为,并且我了解原因。我也明白我可以制作currentLogLevel一个简单的 observable 并订阅它并以这种方式更新本地存储。但是我必须跟踪订阅并手动处理它,编写更多代码等等。我只是想看看是否有办法做我想做的事情:为本地存储提供一个可观察的 getter/setter。

0 投票
2 回答
1238 浏览

knockout.js - 淘汰赛计算未使用可观察数组进行更新

我有以下视图模型:

页面加载时“FirstPrice”正常更新,但更改“orders”数组第一行的Price后,“FirstPrice”仍然是页面加载后的第一个值。

什么不见​​了?

* 我删除了一些代码行以简化示例

谢谢