简体   繁体   English

淘汰对象中的js数据绑定子级

[英]knockout js data-bind child in object

I've tried for some time now to figure out how to data-bind a child in an object in Knockout js. 我已经尝试了一段时间,以弄清楚如何在Knockout js中的对象中将一个孩子数据绑定。 I hope someone can help me solve this :) 我希望有人可以帮助我解决这个问题:)

I want to display the obj.externalLinks.facebook. 我想显示obj.externalLinks.facebook。 I can't figure out how to data-bind it. 我不知道如何进行数据绑定。 This is what I have: 这就是我所拥有的:

Model: 模型:

var obj = ko.observable();

var data = {    "id" : 1,
    "itemName" : "item name",
    "price": 250,
    "ticketLink" : "http://google.com",
    "externalLinks" : [
        { "homePage" : "http://google.com" },
        { "mySpace" : "http://myspace.com" },
        { "facebook" : "http://facebook.com" },
        { "wikipedia" : "http://en.wikipedia.org/" },
        { "facebookEventPage" : "http://facebook.com" }
        ]
    }

obj(data);

ko.applyBindings(obj)

View: 视图:

<h1 data-bind="text: externalLinks[2]"></h1>

I know the data-bind part is wrong, but how do I do it? 我知道数据绑定部分是错误的,但是我该怎么做呢? :( :(

Try this one 试试这个

Html HTML

<span data-bind="text: link('facebook')"></span>

JavaScript JavaScript的

var data = {    "id" : 1,
    "itemName" : "item name",
    "price": 250,
    "ticketLink" : "http://google.com",
    "externalLinks" : [
        { "homePage" : "http://google.com" },
        { "mySpace" : "http://myspace.com" },
        { "facebook" : "http://facebook.com" },
        { "wikipedia" : "http://en.wikipedia.org/" },
        { "facebookEventPage" : "http://facebook.com" }]
    };

var ViewModel = function(rawData){
    var self = this;
    var data = rawData;

    self.link = function(linkKey){
        for (var i=0; i<data.externalLinks.length; i++){
            var item = data.externalLinks[i];
            if(item[linkKey]){
                return item[linkKey];
            }
        }
    };    
};

ko.applyBindings(new ViewModel(data));

So you can bind to the link by linkKey 因此,您可以通过linkKey绑定到link

jsfiddle sample jsfiddle示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM