2013-06-24 14 views
5

के साथ जुड़े प्रदर्शित मैं एक मॉडल WebsiteTemplate कि एक WebLayout के अंतर्गत आता है है। UI में मैं webLayouts के सभी की एक सूची प्रदर्शित लेकिन एक एचटीएमएल वर्ग है जिसकी आईडी को जोड़ा गया है करने के लिए सक्षम होना चाहते हैं webLayout के रूप में ही है। webLayoutwebsiteTemplate से संबंधित है, जो हम जिस मार्ग पर जा रहे हैं उसका मॉडल है।एक मॉडल एक अलग नियंत्रक

यह कैसे करें इस पर कोई विचार है? मुझे पता है कि मेरे पास अपने सेटअप के साथ मूल रूप से कुछ भी गलत हो सकता है, इसलिए उस पर विचारों का स्वागत है। ऐसा लगता है कि मैं render पर webLayout के साथ दूसरे पैरामीटर में पास करना चाहता हूं, लेकिन यह एम्बर तरीका प्रतीत नहीं होता है।

# website_template model 
App.WebsiteTemplate = DS.Model.extend 
webLayout: DS.belongsTo("App.WebLayout") 

# website_layout model 
App.WebLayout = DS.Model.extend 
name: DS.attr("string"), 
thumbnail: DS.attr("string") 

# router 
App.Router.map -> 
@resource "website_template", path: "/website_template/:website_template_id" 

# website_template route 
App.WebsiteTemplateRoute = Ember.Route.extend 
setupController: -> 
@controller.set 'webLayouts', App.WebLayout.find() 

# website_template template 
{{webLayout.id}} 
{{render "_webLayouts" webLayouts}} 

# web_layouts template 
<ul> 
{{#each controller}} 
    <li> 
    <a href="#" {{ action "addLayout" this }}> 
    <img alt="Thumbnail" {{ bindAttr src="thumbnail" }}> 
    {{ name }} 
    </a> 
    </li> 
{{/each}} 
</ul> 

मैं जानता हूँ कि निम्नलिखित काम नहीं करता है, लेकिन यहाँ विचार मैं पूरा करने के लिए कोशिश कर रहा हूँ की छद्म कोड है।

# website_template template 
{{render "_webLayouts" webLayouts webLayout}} 

# web_layouts template 
<ul> 
{{#each webLayouts in controller}} 
    {{#if webLayouts.id is webLayout.id}} 
    <li class="selected"> 
    {{else}} 
    <li> 
    {{/end}} 
    <a href="#" {{ action "addLayout" this }}> 
    <img alt="Thumbnail" {{ bindAttr src="thumbnail" }}> 
    {{ name }} 
    </a> 
    </li> 
{{/each}} 
</ul> 
+0

आप अपने 'WebLayout' मॉडल की परिभाषा दिखा सकते हैं? – intuitivepixel

+0

@intuitivepixel मैंने 'WebLayout' मॉडल के साथ प्रश्न संपादित किया। वर्तमान में इसमें कोई संगठन नहीं है। –

+0

जब आप का उपयोग 'belongsTo' दो मॉडल मुझे लगता है कि होना चाहिए और संघ के बीच एक-से-एक संबंध घोषित करने के लिए ... – intuitivepixel

उत्तर

1

पहले देखो मैं क्या देख याद आ रही है कम दो मॉडलों के बीच एक एक-से-एक संबंध की सही सेटअप है।

उदाहरण:

# website_template model 
App.WebsiteTemplate = DS.Model.extend 
    webLayout: DS.belongsTo("App.WebLayout") 

# website_layout model 
App.WebLayout = DS.Model.extend 
    name: DS.attr("string"), 
    thumbnail: DS.attr("string"), 
    websiteTemplate: DS.belongsTo("App.WebsiteTemplate") 

पहचान-पत्र की तुलना आप एक कस्टम हैंडल सहायक जो मूल रूप से इस प्रकार दिखाई देगा लिख ​​सकता है के लिए के रूप में:

Ember.Handlebars.registerHelper('equal', function(value1, value2, options) { 
    if (value1 === value2) { 
    return options.fn(this); 
    } else { 
    return options.inverse(this); 
    } 
}); 

और फिर इसका इस्तेमाल इस तरह:

{{#equal webLayouts.id webLayout.id}} 
    are equal 
{{else}} 
    not equal 
{{/equal}} 

कस्टम सहायक के लिए यहाँ एक काम jsbin देखें।

उम्मीद है कि यह मदद करता है।

+0

@JessicaDillon तुम्हारा मतलब आप मामलों आप की जरूरत नहीं है, जहां है कि ऐसा एक' webLayout.id 'बराबर' सहायक को पास करने के लिए? – intuitivepixel

संबंधित मुद्दे