Sur*_*slu 3 knockout-mapping-plugin knockout-2.0 knockout.js
我正在尝试使用KnockOut映射插件创建视图模型,
这是对象,基本上下面是一个带有单词的句子.
var data = {
name: 'Example Title',
sentences: [
{id: 1, words: [{text: 'word1'}, {text: 'word2'}]},
{id: 2, words: [{text: 'word3'}, {text: 'word4'}]}
]};
Run Code Online (Sandbox Code Playgroud)
我想有三个视图模型,
文章应包含句子,句子应包含文字
var ArticleViewModel = function(data)
{
var self = this;
self.id = ko.observable(data.id);
self.sentences = ko.observableArray([]);
}
var SentenceViewModel = function(data)
{
var self = this;
self.id = ko.observable(data.id);
self.words = ko.observableArray([]);
}
var WordViewModel = function(data)
{
var self = this;
self.id = ko.observable(data.id);
self.text = ko.observable(data.text);
}
Run Code Online (Sandbox Code Playgroud)
我想把它放在View中,如下所示;
<p data-bind="foreach:sentences">
<span data-bind="foreach:words">
<span data-bind="text:text">
</span>
</p>
Run Code Online (Sandbox Code Playgroud)
我甚至不确定我想要实现的是可行的,但我想我需要映射,但我无法使这项工作,
这是我的一些试验,也许有助于更好地理解我的问题, http://jsfiddle.net/sureyyauslu/2wTjy/6/
非常感谢...
问题是你有一个嵌套在另一个内的ap标签.模板引擎无法解析此不正确的标记.
当我认为你想要另一个foreach时,你也使用了绑定.
<p data-bind="foreach:sentences">
<span data-bind="text:id"></span>
<span data-bind="foreach:words">
<span data-bind="text:text"></span>
</span>
</p>
Run Code Online (Sandbox Code Playgroud)
最后,句子模型可以简化为
var mySentenceModel = function(data) {
var self = this;
ko.mapping.fromJS(data, wordMapping, self);
}
Run Code Online (Sandbox Code Playgroud)
您不需要定义id等,因为它完全由映射插件处理.
http://jsfiddle.net/madcapnmckay/6hMA3/
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
3425 次 |
| 最近记录: |