Knockout.js语法
我是Javascript MVC框架Knockout.js的初学者
来自传统的Javascript(和一些jQuery经验),我在理解语法学习Knockout.js时遇到了困难
考虑下面的陈述;
风景:
查看型号:
function WebmailViewModel() { // Data var self = this; self.folders = ['Inbox', 'Archive', 'Sent', 'Spam']; self.chosenFolderId = ko.observable(); // Behaviours self.goToFolder = function(folder) { self.chosenFolderId(folder); }; };
能否请您解释一下这些陈述的内容(特别是$ data,$ root)? 还有什么声明self.chosenFolderId(folder);
好吗?
$ data和$ root关键字通常由KO使用。 当您在数组(data-bind)上使用foreach时,KO会为数组中的每个元素创建一个
。
在这种情况下,$ data是数组的当前项(如folders [i]),$ root是父元素。 对于您来说,文件夹是ViewModel的一个字段:$ data =迭代时的当前文件夹(viewModel.folder [i])$ root = viewModel
self.chosendFolderId(文件夹)执行viewModel selectedFolderId方法。 代码使用self来保持viewModel值,因为在函数中关键字“this”不是viewModel而是方法的发送者。 这是一个关闭。
编辑:$父关键字是树的普通级别。 $ root关键字是顶层树的级别。
viewModel { topObjects : ko.observableArray() } viewModel.topObjects.push({ Objects : ko.observableArray() });
如果我们在viewModel.topObjects.Objects上创建一个foreach,$ parent是topObjects,$ root是viewModel。
谢谢Tjorriemorrie 😉
回答你关于self.chosenFolderId(folder)
它将值写入chosenFolderId
observable。 参数“ folder
”的值实际上是$data.
当前值$data.
如果您尝试在提供的代码中将引用从self更改为this (这是相同的事情),则选择css不起作用。 有人知道为什么吗?
this.goToFolder = function(folder) { this.chosenFolderId(folder); };
关于你的问题:
语句的作用(特别是
$data
,$root
)?
$data
:表示当前的viewmodel。 它在foreach
循环中很有用。 例如 – 如果我们有学生集合并且我们正在迭代这个集合, $data
给我们当前的学生实例。 这样我们就可以使用$data
来获取学生对象的各种属性,如name
, class
等
$root
:这是根视图模型,是层次结构中的最高上下文。 因此,通过$root
,您可以访问顶级属性。