2013-05-19 5 views
5

एक एंबर Handlebars टेम्पलेट में अंदर से एक एंबर नियंत्रक के समारोह संपत्ति हो रही है, यहएक एंबर Handlebars टेम्पलेट

  • {{someProperty}}
  • का उपयोग करके एक नियंत्रक के (स्ट्रिंग/बूलियन/संख्या के आधार पर) संपत्ति का उपयोग करने के लिए संभव है <someHtmlTag {{bindAttr someHtmlTagAttribute="someProperty" />

संरचनाएं।

यह फ़ंक्शन-आधारित नियंत्रक गुणों के लिए काम नहीं करता प्रतीत होता है।

उदाहरण

निम्नलिखित काम करता है

//Handlebars 
<script type="text/x-handlebars" id="index"> 
    Some property: {{someProperty}}<br/> 
</script> 

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: "yolo", 
}); 

निम्नलिखित

//Handlebars 
<script type="text/x-handlebars" id="index"> 
    Some property: {{someProperty}}<br/> 
</script> 

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: function() { 
     return "yolo"; }, 
}); 

Here is a jsFiddle

काम नहीं करता है

Uncaught Error: assertion failed: Attributes must be numbers, strings or booleans, not function() ...{ 

कैसे मैं एक Handlebars टेम्पलेट के भीतर से समारोह आधारित एंबर नियंत्रक गुण का उपयोग कर सकते हैं: 210


{{bindAttr ...}} का उपयोग समस्या में एक छोटे से अंतर्दृष्टि देता है?

+2

आप के लिए देख रहे हैं गणना की गई गुण, @intuitivepixel 'उत्तर नीचे बताता है कि बुनियादी सीपी कैसे बनाएं, अधिक उन्नत उपयोग जांच के लिए http://emberjs.com/guides/object-model/computed-properties/ –

+0

यह ब्राउज़र निर्दिष्ट हो सकता है सी मुद्दा https://stackoverflow.com/questions/18605866/what-does-property-do-in-function-property – yagnasri

उत्तर

13

तुम सिर्फ एक समारोह जब संपत्ति पर पहुंचने पर निष्पादित किया जाना है, तो आप की तरह कुछ कर सकता है की जरूरत है:

//Javascript 
App.IndexController = Ember.ObjectController.extend({ 
    someProperty: function() { 
     // do your stuff... 
     return "yolo"; 
    }.property() 
}); 

कार्य fiddle

आशा है कि यह मदद करता है

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