一行对象创建

时间:2015-05-07 18:38:36

标签: javascript knockout.js

我已经遇到了这样一种情况:我在一个语句中创建并填充javascript对象,无论如何,我可能会使用另一种方法,但我觉得有趣的是知道这是否可以实现。

主要原因是,这个赋值必须在我不能使用javascript if语句的上下文中发生,所以我不得不使用三个参数语句(?:)(抱歉我的英文在这里,我打赌这不是这个名字。)。

所以,有了这个:

<!-- ko foreach: someArray-->
  <Input Type="Text" data-bind="value: ( $root.something() ? ['Some Values'][model.index]:'No value' )">
<!-- /ko -->

其中model.index是一个整数属性,对应于与生成的-via php-数组相关的值。

如前所述,我想我会将这两个参数(索引和值)传递给另一个model.function并创建我需要的索引对象,但知道是否有办法做某种方式特别有趣像:

 (((($a={})[0]="Wow, i belong to '$a'")[1]="Yeah!, me too")[2]="But this does not behave as expected ;(")

提前致谢,对不起我的英语。

2 个答案:

答案 0 :(得分:1)

它仅适用于此部分($a={})[0]="Wow, i belong to '$a'"

因为它返回的字符串不是对象,所以你不能(..)[1]到它

这也不是一个好习惯。

您可以像

一样创建内联object
$a = { 0: "Wow, i belong to '$a'", 1: "Yeah!, me too", 2: "Now me too" }

并使用索引

($a = { 0: "Wow, i belong to '$a'", 1: "Yeah!, me too", 2: "Now me too" })[model.index]

内联array(更适合您的情况)

($a = ["Wow, i belong to '$a'", "Yeah!, me too", "Now me too"])[model.index]

答案 1 :(得分:0)

我真的想过@JAG的回答,但试着这样做我得到了这个错误,这是否有合理的解释?

(很抱歉使用了答案功能,但评论不能包含图片)

enter image description here

(Chrome控制台)最新版本,Windows 7。