我在淘汰赛中有一个可观察的sizeDetails,我需要在淘汰赛模板中获取长度。我的观察结果如下
sizeDetails: ko.observable()
在Ajax通话成功后,我将可观察性设置如下
self.sizeDetails({sizeGuideDetails: sizeGuideDetails,
shopBySizeDetails: shopBySizeDetails
});
如何在剔除模板中分别获取sizeGuideDetails和shopBySizeDetails长度
答案 0 :(得分:0)
由于键本身是对象,因此我们必须像this那样获得它们的长度。
一般来说,这比淘汰赛更重要。为了获得可观察到的淘汰赛的价值,您可以像调用函数一样调用它。例如:sizeDetails()
。在这种情况下,它将返回对象,然后我们可以获取单个大小并将其以数组或适合您的任何格式返回。
function getSizeDetails(){
const sizeDetailsObject = self.sizeDetails();
let sizes = [];
for (var key in sizeDetailsObject) {
//check if key exists
if (sizeDetailsObject.hasOwnProperty(key)) {
//since key is sure to be an object, get its length like this:
sizes.push(Object.keys(sizeDetailsObject[key]).length);
}
}
return sizes;
};
您还可以创建一个pure Computed observable,其值会在sizeDetails
更新时自动更新。
self.sizes = ko.pureComputed(function(){
const sizeDetailsObject = self.sizeDetails();
let sizes = [];
for (var key in sizeDetailsObject) {
if (sizeDetailsObject.hasOwnProperty(key)) {
sizes.push(Object.keys(sizeDetailsObject[key]).length);
}
}
return sizes;
}, self);
现在,您始终可以通过致电self.sizes()
获得最新的尺寸。
要单独获取尺寸,您可以按照Erick和Bivo在回答中提到的方式进行。
答案 1 :(得分:0)
尝试
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fillViewport="true"
android:orientation="vertical">
<android.support.constraint.ConstraintLayout
android:orientation="vertical"
android:background="@color/sos"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/mybtn1"
android:text="1"
android:layout_width="match_parent"
app:layout_constraintHeight_percent="0.99"
android:layout_height="0dp" />
<Button
app:layout_constraintTop_toBottomOf="@+id/mybtn1"
android:text="2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
</ScrollView>
答案 2 :(得分:0)
sizeDetails().sizeGuideDetails.length
或sizeDetails().sizeGuideDetails().length
取决于sizeGuideDetails
是否可观察。与shopBySizeDetails
相同。
您可以在html中喜欢的任何地方使用它,例如:
<span data-bind="text: sizeDetails().sizeGuideDetails().length">
或没有任何html标记:
<!-- ko if: sizeDetails().sizeGuideDetails().length > 0 -->
如果条件为true的一些html
<!-- /ko -->