gpt4 book ai didi

javascript - Knockout.js 2.0.0 - 在此示例中如何设置 bool 值?

转载 作者:行者123 更新时间:2023-11-30 08:12:11 25 4
gpt4 key购买 nike

我正在查看来自 Knockouts 站点的任务列表示例,但在理解如何设置特定值时遇到了问题。

创建了一个名为 Task 的 javascript 对象。它有一个 bool 属性“isDone”,通过 this.isDone = ko.observable(data.isDone);

分配

我的问题是我不明白 true 或 false 的值是如何传递给这个属性的。没有迹象表明它是在对象的初始创建过程中传递的,javascript 文件中唯一使用该值的其他地方是:

self.incompleteTasks = ko.computed(function() {
return ko.utils.arrayFilter(self.tasks(), function(task) {
return !task.isDone()
});

但这仅适用于任务列表底部的总计 - 这可以完全删除并且应用程序仍然可以正常工作(当然你不会有总计)。

不过,在标记中,复选框输入使用了“isDone”值:

<input type="checkbox" data-bind="checked: isDone" />

是否有可能在复选框被选中时,复选框值本身(应该为真)被传递到“isDone”?

通常,我希望“isDone”需要已经有一个与之关联的“真”或“假”值才能在标记中使用,但我看不到该值是如何分配的。

这里是上下文的完整代码:

function Task(data) {
this.title = ko.observable(data.title);
this.isDone = ko.observable(data.isDone);


}

function TaskListViewModel() {
// Data
var self = this;
self.tasks = ko.observableArray([]);
self.newTaskText = ko.observable();
self.incompleteTasks = ko.computed(function() {
return ko.utils.arrayFilter(self.tasks(), function(task) {
return !task.isDone()
});
});

// Operations
self.addTask = function() {
self.tasks.push(new Task({ title: this.newTaskText() }));
self.newTaskText("");

};
self.removeTask = function(task) { self.tasks.remove(task) };
}

ko.applyBindings(new TaskListViewModel());

...这是标记:

<!DOCTYPE html>
<html>
<head>
<title>Knockout Practice</title>

</head>

<body>
<h3>Tasks</h3>

<form data-bind="submit: addTask">
Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
<button type="submit">Add</button>
</form>

<ul data-bind="foreach: tasks, visible: tasks().length > 0">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, disable: isDone" />
<a href="#" data-bind="click: $parent.removeTask">Delete</a>
</li>
</ul>

You have <b data-bind="text: incompleteTasks().length">&nbsp;</b> incomplete task(s)
<span data-bind="visible: incompleteTasks().length == 0"> - it's beer time!</span>


<script type='text/javascript' src='javascript/jquery-1.6.4.js'></script>
<script type='text/javascript' src='javascript/jquery-tmpl.js'></script>
<script type='text/javascript' src='javascript/knockout-2.0.0.js'></script>
<script type='text/javascript' src='javascript/myKnockoutCode.js'></script>


</body>

</html>

最佳答案

checked 绑定(bind)松散地确定它是真还是假。这意味着 0、空字符串、null、false、NaN 和 undefined 将被视为 false。

因此,isDone 是否实际初始化为 false 并不重要。

选中或取消选中复选框时,checked 绑定(bind)会将其正确设置为 truefalse

关于javascript - Knockout.js 2.0.0 - 在此示例中如何设置 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691517/

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