首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KnockoutJS:嵌套ko.observableArray

KnockoutJS:嵌套ko.observableArray
EN

Stack Overflow用户
提问于 2011-05-17 01:37:54
回答 1查看 3.8K关注 0票数 1

我正在尝试确定构建应用程序的最佳方式,但我有点困惑。我希望我的基本结构是这样的:

代码语言:javascript
复制
banners (ko.observableArray)
   - banner 
       - previewURLs (ko.observableArray)

我创建"banner“的方法是将它定义为一个类,如下所示:

代码语言:javascript
复制
// define a "banner" class
function banner(inventory, name, advertiser, artType, artSize, previewURLs) {
    return {
        inventory : ko.observable(inventory),
        name : ko.observable(name),
        advertiser : ko.observable(advertiser),
        artType : ko.observable(artType),
        artSize : ko.observable(artSize),
        previewURLs : ko.observableArray(previewURLs),

        // track if our banner is selected
        isSelected : ko.observable(false),  
    };
};

这是正确的方法吗?我不确定如何将“previewURL”数组“嵌套”到横幅本身中。我尝试过上面的方法,但似乎不起作用。

然后在我的viewModel中:

代码语言:javascript
复制
var viewModel = {
    selectAll: ko.observable(false),
    banners : ko.observableArray([
        new banner("network", "Banner #1", "Target and Friends", "3rd Party", "300x250"), 
        new banner("oo", "Banner #2", "IBM", "Flash", "720x90")
    ]),
    previewURLs : ko.observableArray([
        new previewURL("test site #1", "http://www.google.com"),
        new previewURL("test site #2", "http://www.google.com")
    ]),
    addBanner : function() {
        this.banners.push(new banner("network", "Banner"));
    }
};

总的来说,我只是对如何构建它感到困惑。我以前从未使用过任何MVVM或MVC结构,所以这对我来说是全新的。

我的想法是,我可以通过像banners.banner.previewURL(1)这样的操作来访问我的横幅预览may,但我的想法可能与此相去甚远。

我可以在新横幅的定义中定义一个新的previewURL吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-17 02:53:17

我认为你的想法是对的。但是,在创建viewModel对象之前,不能访问viewModel.previewURLs。您可能希望将预览your传递给banner构造函数,或者将预览your存储在先前定义的变量中,该变量可以在banner构造函数中访问。

在此处传入预览here的示例:http://jsfiddle.net/rniemeyer/bZhCk/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6021154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档