gpt4 book ai didi

javascript - 等于 ko.observable() 的变量的默认值是多少?

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:45 25 4
gpt4 key购买 nike

我刚刚开始学习 KnockoutJS。这是webmail客户端文件夹导航的代码,在查看代码中比较引用变量$data$root.chosenFolderId()是否指向同一个内存位置。但我不明白 $root.chosenFolderId() 的初始值是多少?

Reference

查看:

<!-- Folders -->
<ul class="folders" data-bind="foreach: folders">
<li data-bind="text: $data, css : {selected: $data == $root.chosenFolderId()}, click: $root.goToFolder"></li>
</ul>

查看模型:

function WebmailViewModel() {
// Data
var self = this;
self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];

self.chosenFolderId = ko.observable();

//Operations
self.goToFolder = function(folder){
self.chosenFolderId(folder);
};
};

ko.applyBindings(new WebmailViewModel());

最佳答案

你已经完成了 90%。如您所述,foreach 将遍历 folders 数组,$data 将成为数组中的当前项。

获取 chosenFolderId 的值

调用 goToFolder 的点击绑定(bind)会将它绑定(bind)到的元素作为参数传递,因此 chosenFolderId 值将设置为与点击对应的文件夹元素

  • 元素。

    例如:单击“存档”元素将触发绑定(bind)到 folders[1] 的元素的 click 事件,从而使用 folders 调用 goToFolder [1] 值。

    初始值

    $root.chosenFolderId() 的初始值将为 undefined,因为您在声明时不带任何参数。在初始 View 中,没有文件夹显示为选中状态,如果您:

    self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
    self.chosenFolderId = ko.observable(self.folders[0]);

    那么最初会选择“收件箱”。

    内存位置

    您询问 $data$root.chosenFolderId() 是否指向相同的内存位置。这基本上是正确的 - 如果您的文件夹是一个对象数组,那么它们将包含相同的引用(对于所选元素)。从技术上讲,字符串在 JS 中也是引用(参见解释 https://stackoverflow.com/a/51193/625200),但将 JS 中的基元(字符串、数字、 bool 值)视为值而不是引用更简单。

  • 关于javascript - 等于 ko.observable() 的变量的默认值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941030/

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