2013-02-11 11 views
9

मैं एक एम्बर आवेदन करने की कोशिश कर रहा हूं। मैं एक गणना संपत्ति है और नियंत्रक इस तरह दिखता है:एम्बर.जेएस में गतिशील गणना गुणों को हटा दिया गया?

// The Controller 

Todos.Controller = Ember.Controller.create({ 

    // ** SNIP ** // 

    countCompleted: function() 
    { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 

// The View 

{{Todos.Controller.countCompleted.property}} Items Left 

अब ट्यूटोरियल और मेरा अनुसरण कर Ember.JS के एक पुराने संस्करण का उपयोग कर रहा है।

Uncaught Error: assertion failed: Ember.Object.create no longer supports defining computed properties.

यह करने के लिए वैकल्पिक तरीका क्या है: मैं हर त्रुटि लेकिन यह तय है?

उत्तर

10

गणना की गई संपत्ति केवल किसी ऑब्जेक्ट के create() फ़ंक्शन पर बहिष्कृत है। यदि आप एक गणना की गई संपत्ति बनाना चाहते हैं, तो आपको पहले extend() ऑब्जेक्ट, और फिर create() करना होगा।

उदाहरण के लिए:

// The Controller 

Todos.TodosController = Ember.Controller.extend({ 

    // ** SNIP ** // 

    countCompleted: function() 
    { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 

// Note the lower case 't' here. We've made a new object 
Todos.todosController = Todos.TodosController.create(); 

// The View 


// We reference the created object here (note the lower case 't' in 'todosController') 
{{Todos.todosController .countCompleted.property}} Items Left 
+0

ओह मैं आपको धन्यवाद देता हूं देखते हैं। उपरोक्त पोस्ट कोड का उपयोग कर एक उदाहरण होना संभव होगा? मैं फिलहाल मेरी गहराई से थोड़ा सा हूं। – andy

+0

निश्चित रूप से, मैंने कोड के साथ अपनी पोस्ट अपडेट की है। – Deif

+0

ग्रेट धन्यवाद एक गुच्छा! – andy

2

यह भी ठीक से काम करने लगता है अगर आप एक फिर से खोलना कार्य करें:

Todos.todosController = Ember.Controller.create({ 
    // ** SNIP ** // 
}); 

Todos.todosController.reopen({ 
    countCompleted: function() { 
     return this.get('todos').filterProperty('completed', true).length 
    }.property(), 
}); 
+1

यह वास्तव में जाने का तरीका है यदि आप अपनी' एप्लिकेशन 'ऑब्जेक्ट। – Nico