作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为这可能更多的是语言问题而不是框架问题,但这里是:
我在设置复选框的初始值时遇到问题。
我添加了 jsFiddle
谢谢!
这是麻烦的代码:
var allPrices = [
{ month: 'January', prices: [ (3, true), (4, false), (4, false), (4, false)] },
{ month: 'February', prices: [(3, true), (4, false), (4, false), (4, false)] },
{ month: 'March', prices: [(3, true), (4, false), (4, false), (4, false)] }
]
//--Page ViewModel
var id = 1;
//--Set the structure for the basic price object
function Price(quote, isChecked) {
this.quote = ko.observable(quote);
this.valid = true;
if (isNaN(quote)) {
this.valid = false;
}
this.selected = ko.observable(isChecked);
this.id = id;
id++;
}
最佳答案
使用语法(3, true)
,您正在使用 Comma Operator并且不创建对象。
逗号运算符计算其第二个参数(在本例中为 true
),因此它不会像您可能期望的那样创建值为 3 和 true 的对象。
您需要使用 {}
创建一个对象,并且还需要一些属性名称,因此您需要将价格重写为:
prices: [
{ quote: 3, isChecked: true},
{ quote: 4, isChecked: false},
{ quote: 4, isChecked: false},
{ quote: 4, isChecked: false} ]
并且您需要将价格创建更改为
this.prices = ko.utils.arrayMap(prices, function (item) {
return new Price(item.quote, item.isChecked);
});
因为 arrayMap
的回调函数接受参数:当前项,并且您可以从当前项访问 quote
和 isChecked
项目。
演示 JSFiddle.
关于javascript - 初始化 knockout 复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730991/
我是一名优秀的程序员,十分优秀!