2012-11-13 10 views
8

मैं वर्तमान में दो डाटा मॉडल, जहां फू प्रकार बार्स का एक "toMany" संपत्ति के साथ काम कर रहा हूँ के बीच बाइंडिंग सामग्री। अब मैं दो चयन बक्से बनाने की कोशिश कर रहा हूं, जहां पहली बार फू के साथ आबादी ली जाती है, यह दूसरी सूची को केवल उस फू से जुड़े बार्स को परिशोधित करता है।EmberJS नियंत्रकों

यहाँ JSFiddle: नीचे http://jsfiddle.net/drew/6jLCy/

संहिता, लेकिन यह निश्चित रूप से काम नहीं करता। यह पहले के लिए SelectBox मानों को सेट करने तक जाता है, लेकिन संबंधित बार मान शीर्षक वाले दूसरे को पॉप्युलेट नहीं करता है। एचटीएमएल के लिए

App = Em.Application.create(); 

App.store = DS.Store.create({ 
    revision: 7, 
    adapter: DS.fixtureAdapter 
}); 

/************************** 
* Models 
**************************/ 

App.Foo = DS.Model.extend({ 
    bars: DS.hasMany('App.Bar'), 
    title: DS.attr('string') 
}); 
App.Bar = DS.Model.extend({ 
    foos: DS.hasMany('App.Foo'), 
    title: DS.attr('string') 
}); 


/************************** 
* Fixtures 
**************************/ 

App.Foo.FIXTURES = [ 
    { 
     id: 0, 
     title: 'Footitle 1', 
     bars: [0,1] 
    }, 
    { 
     id: 1, 
     title: 'Footitle 2', 
     bars: [0,1,2] 
    } 
]; 

App.Bar.FIXTURES = [ 
    { 
     id: 0, 
     title: 'Bartitle 1', 

    },{ 
     id: 1, 
     title: 'Bartitle 2' 
    },{ 
     id: 2, 
     title: 'Bartitle 3' 
    } 
]; 


/************************** 
* Views 
**************************/ 

App.SetFooField = Em.Select.extend({ 
    contentBinding: 'App.fooController', 
    valueBinding: 'content.selected', 
    optionLabelPath: 'content.title' 
}); 

App.SetBarField = Em.Select.extend({ 
    contentBinding: 'App.barController', 
    valueBinding: 'content.selected', 
    optionLabelPath: 'content.title' 
}); 

/************************** 
* Controllers 
**************************/ 

App.fooController = Em.ArrayController.create({ 
    content: App.store.findAll(App.Foo) 
}); 

App.barController = Em.ArrayController.create({ 
    contentBinding: 'App.fooController.selected.bars' 
});​ 

मार्कअप:

<script type="text/x-handlebars"> 

    {{view App.SetFooField}} 
    {{view App.SetBarField}} 

</script>​ 

उत्तर

1

पवित्र गाय। लगभग नट्स जाने के कई दिनों बाद, यह पता चला कि यह नवीनतम एम्बर-डेटा में पूरी तरह से एक बग है। फिक्स्चर में, सभी आईडी को स्ट्रिंग होने की आवश्यकता होती है। बस। सादा। पागल।

/************************** 
* Fixtures 
**************************/ 

App.Foo.FIXTURES = [ 
    { 
     id: '0', 
     title: 'Footitle 1', 
     bars: ['0','1'] 
    }, 
    { 
     id: '1', 
     title: 'Footitle 2', 
     bars: ['0','1','2'] 
    } 
]; 

App.Bar.FIXTURES = [ 
    { 
     id: '0', 
     title: 'Bartitle 1', 

    },{ 
     id: '1', 
     title: 'Bartitle 2' 
    },{ 
     id: '2', 
     title: 'Bartitle 3' 
    } 
]; 

failed to get embedded's object property using ember.js with ember-data

विशाल धन्यवाद इस सवाल का जवाब देने के लिए @dgeb करने के लिए।

jsfiddle तदनुसार अपडेट कर दिया।

http://jsfiddle.net/drew/6jLCy/

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