J'essaie de décider de la meilleure façon de structurer mon application, et je suis un peu confus. Je veux que ma structure de base pour être quelque chose comme ceci:KnockoutJS: imbriquer ko.observableArray
banners (ko.observableArray)
- banner
- previewURLs (ko.observableArray)
La façon dont je crée la « bannière » est en le définissant comme une classe comme ceci:
// 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),
};
};
Est-ce correct méthode? Je ne sais pas comment "imbriquer" le tableau "previewURLs" dans la bannière elle-même. J'ai essayé de le faire ci-dessus mais cela ne semble pas fonctionner.
Puis dans mon ViewModel:
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"));
}
};
Overally, je suis juste confus sur la façon de le structurer. Je n'ai jamais travaillé avec une structure MVVM ou MVC auparavant, donc c'est tout nouveau pour moi.
Je pense que je serais en mesure d'accéder à mes bannières previewURLs en faisant quelque chose comme banners.banner.previewURL(1)
, mais je peux être loin dans cette réflexion. Puis-je simplement définir un nouvel URL d'aperçu à l'intérieur de la définition d'une nouvelle bannière?