【问题标题】:Knockout binding parent and child nodeKnockout 绑定父子节点
【发布时间】:2015-02-16 17:06:20
【问题描述】:

我有返回子节点的问题,似乎它不想绑定。

这里是 jsFiddle http://jsfiddle.net/gnpoe6a6/2/

var viewModel = {
model: ko.mapping.fromJS(data),
people: ko.mapping.fromJS([]),
loadInitialData: function() {
    ko.mapping.fromJS(data, dataMappingOptions, viewModel.people);        
}   
};

【问题讨论】:

  • 有点不清楚,你想做什么,出了什么问题。 fromJS 方法只接受两个参数 - json-data 和 viewmodel。该文档没有说明选项参数。尝试删除它。
  • 为此道歉,我已经更新了 jsFiddle。我想显示 model.name 和孩子的 ID 和孩子的名字。
  • 问题的根源在于您的数据对象在一个数组中,而您没有这样处理它。 Updated fiddle 来说明 ko.mapping 调用的返回结构。

标签: javascript knockout.js


【解决方案1】:

你应该做这样的事情。

查看模型:

    var viewModel = function(data){
    this.name =ko.observable();
    this.array=ko.observableArray();
    ko.mapping.fromJS(data, mapping,this);
    this.loadInitialData=function(){
    this.array(ko.mapping.fromJS(data, mapping,this).TM1ChoreProcessRel());
        console.log(this.array());
    }.bind(this);
};

var data = {//you json Data};

var Person = function(data) {
    this.ID = ko.observable();
    this.Name = ko.observable();
    this.ParemeterValues = ko.observable();
    ko.mapping.fromJS(data, mapping, this)
};

var mapping = {
    create:function(options){
        return  new Person(options.data);
    },
     'TM1ChoreProcessRel': {
         create: function(options) {
             return ko.mapping.fromJS(options.data);         
     }
}
}

ko.applyBindings(new viewModel(data));

工作小提琴here

【讨论】:

  • 嗨,这几乎是我需要的,但是当我尝试实现时,看起来 TM1.ChoreProcessRel 更改为 TM1ChoreProcessRel 这对我来说也是一个问题。我试过改变 this.array(ko.mapping.fromJS(data, mapping,this).TM1ChoreProcessRel());使用 TM1.ChoreProcessRel 但没有运气。
  • 我相信,如果它的名称用 'dot' 分隔,如何访问可观察值可能是一个严肃的问题。例如:TM1.ChoreProcessRel。请随时发布新帖子(即使我很想知道)
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多