问题标签 [computed-properties]

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 投票
2 回答
9309 浏览

javascript - Vue.js 在计算属性中设置值

我有 3 个这样的输入:

当用户为输入输入值时,我想获取用户输入的值以处理值并更新新值。我正在使用计算属性来处理值:

问题是我如何知道用户输入了哪个输入并设置了新值?

0 投票
2 回答
449 浏览

javascript - Ember.js:在服务的把手中使用计算属性

所以我在我的内部有这个计算属性component.jscontexts: Ember.computed.oneWay('myService.contexts'),

而且我能够从另一个动作中获取内容

但是当我尝试使用 Handlebars ( {{contexts}}) 中的计算属性时,它只是空白。

我为这个问题创建了一个 Ember Twiddle:https ://ember-twiddle.com/38de64d58dcf3298df6d4176f15cbc0e?openFiles=components.my-component-help.js%2Ctemplates.components.my-component-help.hbs

如果我有一个数组foo: [ 'foo','bar']并且我做 {{foo}} 它在把手中输出。但是,如果我创建foo了一个计算属性,[ 'foo','bar']那么{{foo}}我什么也得不到。

0 投票
1 回答
191 浏览

swift - Swift 计算属性模板?

有没有办法模板计算属性以避免一遍又一遍地重复相同的代码?例如,现在我有一个类,其代码块如下所示:

这里有一个明显的模式,所有重复的代码只会混淆正在发生的事情,并在我剪切/粘贴/编辑/失败时导致错误。有没有一种方法可以捕获这种模式,然后使用以下内容定义我的属性:

?

0 投票
2 回答
173 浏览

arrays - 无法在控制器中的模型哈希上调用 forEach

我有一条名为的路线tickets,其模型设置如下

模板设法在一个块中循环这些model.tickets就好了{{#each}}

在我的控制器中,我试图设置一个groupBy计算,但在我的计算中,我得到了错误

0 投票
1 回答
93 浏览

ember.js - 将类绑定到动态服务属性

我有一个我称之为state处理加载状态的服务,我可以将它扩展到我将来可能想要的任何东西。我需要这项服务,这样我就可以让不同的组件以某种方式相互通信,这样他们就可以知道另一个组件是否正在加载或做某事。

无论如何,我有这个按钮,我在不同的地方使用它只是发送一个动作,然后变成一个微调器,直到那个动作完成。

他们目前加载动画的工作方式是classNameBindings: ['state.working'],

但是,如果我现在在屏幕上同时有两个这样的按钮,我称this.state.set('working',true);所有按钮现在都在旋转。

我宁愿将一个属性名称传递给按钮组件,告诉它在state服务上观察什么属性以确定它是否应该添加working

我只是在弄清楚如何在组件中进行这项工作时遇到了一些麻烦。

如何让类绑定监视将传递给组件的动态属性名称,loadingPropertyName这样每个按钮组件都可以监视其working类绑定的不同属性。

0 投票
3 回答
85 浏览

ember.js - EmberJS、助手和 ComputedProperty

我有一个Helper,它接收一个元素数组并根据第一个数组返回一些其他数组。

Helper的实现可以是这样的:

Helper工作正常,但如果原始myStringArray 发生更改,则更改不会影响已呈现的列表。

如何结合ComputedProperty的行为和Helper的结果?

0 投票
2 回答
359 浏览

ember.js - 绑定到动态路段

我正在尝试将计算属性(或通过观察者更改)绑定到路由iso中的动态段。locale我拥有的路由器表示为:

这会导致这样的 URL:

我想知道的是,en-us无论您在哪条路线上,是否有任何方法可以以编程方式更改 URL 的一部分?到目前为止,我只运行 a 的问题transitionTo()是我无法知道当前位置的子路线是什么。

基本上,我需要一种将en-us段绑定到计算属性的方法,我可以在 URL 更改时自动更新它。

提前致谢!

编辑:

为了进一步澄清,我正在寻找一种在属性更改时更新 URL 段的方法。像这样的东西:

0 投票
0 回答
923 浏览

ios - 如何在 Swift 中对计算的(仅获取)属性进行单元测试?

我在 NSURL 上编写了以下类扩展:

它包含一个计算的(仅获取)属性:

当我尝试在我的单元测试目标中测试这个计算属性时,编译器会抛出错误Ambiguous use of 'linkComponents'并建议一些“候选人”。

这似乎是一个访问控制问题。我的测试文件中的导入语句有@testable注释。我的所有其他测试(对于非计算属性)都可以编译,无需我指定任何超出默认值的访问控制internal。如果我将这个特定的计算属性转换为一个函数,那么测试目标就会编译 a-ok。

是否可以在 Swift 中对计算属性进行单元测试?如果是这样,怎么做?不用说(1)我不想将此计算属性转换为函数,并且(2)我不想添加public到所有内容中。

编辑 1

编译器建议的“候选人”实际上只是一个“候选人”,它是我的计算属性。即编译器正确识别计算属性,但它不会正式将其识别为唯一有效的候选者。

编辑 2

实际上,将其转换为函数也不起作用。鉴于我正在从我编写的类的扩展中测试函数。也许这与 Foundation 类的扩展中的测试功能有关(如本例中的 NSURL)。

编辑 3

经过进一步调查,看起来这是由于计算属性的返回类型 ( LinkComponents) 。linkComponents编译器不喜欢这样。如果我将返回类型更改为String它就可以了。如果我LinkComponents在测试用例本身或在计算属性的主体中引用类型的对象,它也可以。只有当计算属性的类型是LinkComponents编译器抱怨时。这里是LinkComponents

0 投票
1 回答
1914 浏览

swift - 快速计算的属性 getter 可以改变结构吗?

我有一个包装 a 的结构var data:[T],它还提供有关内部数组的一些统计信息。一个统计数据是最大值,这可能是一项昂贵的操作,因为它需要搜索每个元素以确定最大值——所以我想缓存最大值并仅在需要时重新计算它:

这似乎作为一种方法工作得很好,但我不知道如何做与计算属性相同的事情。

导致抱怨需要将访问器标记为“变异”,因为 getMax() 正在变异(实际上我会将 getMax 代码放入属性访问器中,但这里不重写代码更容易)。

Xcode 建议我这样重写代码:

然后标记另一个问题,Xcode 建议在变异之前放置一个分号,这导致建议在变异之后放置另一个分号,然后在变异之后再放置一个分号,很明显编译器甚至没有试图提供帮助,只是有一个分号迷信。

有没有办法编写一个允许缓存值的计算属性,还是我坚持把它写成一种方法?

0 投票
3 回答
887 浏览

javascript - EmberJS 基于数组的计算属性不起作用

我有一个 EmberJS 控制器,它具有以下计算属性:

它设置了我在模板中使用的布尔标志,以有条件地显示 html。

我还有一个按钮,单击该按钮时,将获取表单数据并通过调用 addRequirement 操作将元素推送到 selectedRequirements 数组中

如果我将 addRequirement 函数更改为此,则 hasSelectedRequirements 计算属性的函数处理程序将按预期运行,并且 console.log 语句有效:

似乎 Ember 的计算属性依赖于观察到的数组是一个完全不同的数组?

问题是计算属性无法识别元素已添加到 selectedRequirements 数组中,并且计算属性函数永远不会被调用(console.log 语句永远不会运行)。为什么计算属性无法识别 selectedRequirements 数组已被修改,如何修复计算属性代码?