下午堆,
我对JS和淘汰赛相对较新,我想我遇到了一个简单的问题。 我试图将这些术语与每个类分开并相应地对它们进行分组。
即。
W13
Adv Cptr Architecture(CPHE-533-A)
W14
高级数据库系统(CPTR-521-A)
后台的对象是
"Classes": [
{
"FullName":"W13 Adv Cptr Architecture (CPHE-533-A)",
--Irrelevant information
},
{
"FullName": "W14 Adv Database Systems (CPTR-521-A)",
--Irrelevant information
}
]
我对淘汰赛的呼吁是
<ul class="myclasses-container" data-bind="foreach: myclasses.Classes">
<!-- ko if: $index() === 0 -->
<p style="font-weight: bold; font-size:16px" data-bind= "text: getTerm(FullName())"></p>
<!-- /ko -->
<!-- ko if: $index() !== "0" -->
<!-- I think this is the line of code that is giving me trouble -->
<!-- ko if: (getTerm(FullName()) != getTerm($parent.myclasses.Classes()[$index()-1].FullName)) -->
<p style="font-weight: bold; font-size:16px" data-bind= "text: getTerm(FullName())"></p>
<!-- /ko -->
<!-- /ko -->
Javacript:
<script>
function getTerm(name) {
return name.substring(0, name.indexOf(' '));
}
function nameWithoutTerm(name) {
return name.substring(name.indexOf(' ') + +1);
}
</script>
呈现HTML:
<ul class="myclasses-container" data-bind="foreach: myclasses.Classes">
<!-- ko if: $index() === 0 -->
<p style="font-weight: bold; font-size:16px" data-bind= "text: getTerm(FullName())"> W13</p>
<!-- /ko -->
<!-- ko if: $index() !== "0" -->
<!-- ko if: (getTerm(FullName()) != getTerm($parent.myclasses.Classes()[$index()-1].FullName())) -->
<p style="font-weight: bold; font-size:16px" data-bind= "text: getTerm(FullName())"></p>
<!-- /ko -->
<!-- /ko -->
正如你所看到的,如果前一个学期不同,我试图做的就是循环打印学期的阵列;但是只显示的是 &#34; W13&#34;而不是&#34; W14&#34;同样。
答案 0 :(得分:2)
正如Patrick Steele所说,如果它是可观察的,你需要在FullName
添加括号。
但这是另一个问题。在第一次检查中,您将$index()
与0
进行比较,这似乎没问题。
问题在于您的第二次检查,您与"0"
而不是0
进行比较,当您使用!==
时,比较将始终为真。
所以它在第一个循环中失败,因为在检查之后,您尝试访问项目编号$index()-1
,$index()
返回0表示您正尝试访问项目编号-1
!< / p>
替换
<!-- ko if: $index() !== "0" -->
使用
<!-- ko if: $index() !== 0 -->
答案 1 :(得分:0)
在比较中,尝试更改:
getTerm($parent.myclasses.Classes()[$index()-1].FullName)
为:
getTerm($parent.myclasses.Classes()[$index()-1].FullName())
您需要将括号添加到FullName,以便调用observable来获取值。你在左侧做了但在右边错过了它。