gpt4 book ai didi

javascript - KnockoutJS 查找 ko.observable() 长度

转载 作者:行者123 更新时间:2023-11-28 17:37:26 25 4
gpt4 key购买 nike

编辑为什么计算出的长度不会保存?

有没有办法仅在精度为 1、2 或 3 时才对可观察量进行数据绑定(bind)?下面是我的虚拟机:

function FFS_ViewModel() {
var self = this;
.....
self.SortOrder = ko.observable();
self.SortOrderLen = ko.computed(function(){
return self.SortOrder().length; // **Error Here: Cannot read property 'length' of undefined**
});
self.Description = ko.observable();
self.records = ko.observableArray([]);
})

这是 View :

<table class='TFtable'>
<thead>
<tr>
<th>Sort Order</th>
</tr>
</thead>
<tbody data-bind="foreach: records">
<tr id="mainFactors">
<td data-bind="if: SortOrderLen === 2"></td>
<td data-bind="text: Description"></td>
</tr>
</tbody>
</table>

最佳答案

问题 1:

当初始化一个不带参数的observable时,它的值变成undefined:

self.SortOrder = ko.observable();
console.log(self.SortOrder()); // Prints: undefined

当尝试访问未定义的属性时,会抛出错误:

(undefined).length; // Throws: Cannot read property 'length' of undefined

修复1:

确保您的计算可以处理未定义值:

self.SortOrderLen = ko.computed(function() {
if (!self.SortOrder()) return 0;

return self.SortOrder().length;
});

或确保使用有效值初始化SortOrder:

self.SortOrder = ko.observable([]);

问题 2:

当您想使用计算或其他可观察的值时,您需要调用它(它是一个函数)。

self.SortOrder;    // Returns the `computed` instance
self.SortOrder(); // Returns the actual value inside

因此,此绑定(bind)将不起作用:

// never `true`, since a ko.computed !== 2
data-bind="if: SortOrderLen === 2"

修复 2:

解开绑定(bind)中的值:

data-bind="if: SortOrderLen() === 2"

关于javascript - KnockoutJS 查找 ko.observable() 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48771227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com