等于ko.observable()的变量的默认值是多少?
What is the default value of variable equal to ko.observable()?
我刚刚开始学习KnockoutJS。这是webmail客户端文件夹导航的代码。在视图代码中,比较引用变量$data
和$root.chosenFolderId()
是否指向相同的内存位置。但是我不明白$root.chosenFolderId()
的初始值是多少?
视图:
<!-- 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
的click绑定将传递它所绑定的项作为参数,因此chosenFolderId
的值将被设置为所单击的
例如:单击"Archive"元素将触发绑定到folders[1]
的项目的单击事件,从而调用goToFolder
并使用folders[1]
的值。
初始值
$root.chosenFolderId()
的初始值将是undefined
,因为您声明它时没有参数。在初始视图中,如果您有:
self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
self.chosenFolderId = ko.observable(self.folders[0]);
则"收件箱"将被初始选中。
内存位置
你问$data
和$root.chosenFolderId()
是否指向相同的内存位置。这基本上是正确的——如果你的文件夹是一个对象数组,那么它们将包含相同的引用(对于选中的项目)。从技术上讲,字符串在JS中也是引用(参见解释https://stackoverflow.com/a/51193/625200),但更简单的做法是将JS中的原语(字符串,数字,布尔值)视为值而不是引用。
相关文章:
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- Selectize选择默认值
- 在KeystoneJS中为Types.Money设置默认值
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 防止在IE7中按回车键时出现默认值
- 如何覆盖jqGrid's语言默认值
- 在JavaScript中,函数的默认值是多少'的原型属性
- 等于ko.observable()的变量的默认值是多少?
- setTimeout和setinterval的第二个参数是必需的吗?如果不是,默认值是多少