2012-02-28 18 views
14

में तत्व जोड़ने का तरीका कैसे देखें मैं सरणी में तत्व जोड़ने का निरीक्षण करना चाहता हूं। नीचे परीक्षण कार्यक्रम है।सरणी

<!-- library load --> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script> 
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.5.min.js"></script> 

<script type="text/x-handlebars"> 
    {{#each App.ArrayController.array}} 
    {{foo}} 
    {{/each}} 
    <button onclick="App.ArrayController.addElement();">add</button> 
</script> 
<script type="text/javascript"> 
    var App = Em.Application.create(); 
    App.ArrayController = Em.Object.create({ 
    array: [{foo:1}, {foo:2}, {foo:3}], 
    addElement: function() { 
     this.array.pushObject({foo:4}); 
    }, 
    elementAdded: function() { 
     alert('ok'); // not invoked... 
    }.observes('array') 
    }) 
</script> 

लेकिन जब कॉल addElement, elementAdded लागू नहीं है ... मैं कैसे तत्व जोड़ देखते हैं?

उत्तर

24

इसके बजाय अवलोकन ('सरणी @ प्रत्येक') का उपयोग करता है। jsfiddle कोड here

+0

ओह, @each के साथ देख सकते हैं! – arumons

+1

लेकिन http://eemjs.com/ पर @each की कोई जानकारी नहीं है ... – arumons

+2

@arumons, आप प्रलेखन अपडेट कर सकते हैं :) – Amareswar

6

आप एम्बर.एरेरे कंट्रोलर का उपयोग कर सकते हैं और arrayDidChange फ़ंक्शन पर ओवरराइट कर सकते हैं और विकल्प से थर्म से अन्य विधियों को कॉल कर सकते हैं।

<!-- library load --> 
<script type="text/x-handlebars"> 
    {{#each App.ArrayController.array}} 
    {{foo}} 
    {{/each}} 
    <button onclick="App.ArrayController.addElement();">add</button> 
</script> 
<script type="text/javascript"> 
    var App = Em.Application.create(); 
    App.arrayController = Ember.ArrayController.create({ 
    content: [{foo:1}, {foo:2}, {foo:3}], 
    addElement: function() { 
     console.log(this); 
     var array = this.get('content') 
     array.pushObject({foo:4}); 
     // this.set('array', array); 
    }, 
    elementAdded: function() { 
     console.log('ok'); // not invoked... 
    }.observes('array'), 

    arrayDidChange: function(item, idx, removedCnt, addedCnt) { 
     this.elementAdded(); 
     this._super(item, idx, removedCnt, addedCnt); 
    } 
    }); 
</script> 

और आप का उपयोग Observers

+0

fmm का उपयोग करेंगे .. मैं arrayDidChange का भी उपयोग करता हूं ... ठीक काम करता है। धन्यवाद! – arumons

4

Check out this fiddle पता है कि कैसे वास्तव में क्या वस्तु जोड़ा या सरणी ArrayController का उपयोग करने से हटा दिया गया है को देखने के लिए कर सकते हैं।