मैं एंबर जानने के लिए शुरू कर रहा हूँ और यह स्पष्ट नहीं है क्या घटनाओं को संभालने के लिए सबसे अच्छा, सबसे स्वीकार्य, या यहाँ तक कि इरादा तरीका है। क्या क्लिक फ़ंक्शन इवेंट तर्क में लक्ष्य की जांच करना स्वीकार्य है, क्या मुझे प्रत्येक आइटम के लिए एक नया दृश्य बनाना चाहिए जिसके लिए {{action}} के अलावा किसी अन्य ईवेंट की आवश्यकता है, या कुछ अलग है?Ember.js में ईवेंट को संभालने का सबसे अच्छा तरीका क्या है?
उत्तर
IMO आप {{action}}
सहायक जहां संभव हो उपयोग करना चाहिए। यदि आप टेम्पलेट में टैग पर ईवेंट संलग्न करना चाहते हैं, तो {{action}}
का उपयोग करें; एक नया दृश्य बनाने के लिए कोई जरूरत नहीं:
<a {{action showPosts href=true}}>All Posts</a>
<form {{action validate target="controller"}}>
// ...
</form>
ऊपर के लिए एक अपवाद है जब आप एक विशिष्ट तत्व पर एक से अधिक घटनाओं हैंडल करना चाहते हैं:
// Template
<ul>
{{#each post in controller}}
{{#view App.PostView}}
{{title}}
{{#if view.showDetails}}
<span>{{summary}}</span>
{{/if}}
{{/view}}
{{/each}}
</ul>
// View
App.PostView = Ember.View.extend({
tagName: li,
classNames: ['post-item'],
mouseEnter: function(event) {
this.set('showDetails', true);
},
mouseLeave: function(event) {
this.set('showDetails', false);
}
});
हम दोनों mouseEnter
पर कब्जा करने की जरूरत के रूप में और mouseLeave
(दिखाने के लिए और क्रमशः पद का ब्यौरा छिपाने के लिए), यह दृश्य में यह करने के लिए, टेम्पलेट्स में बहुत ज्यादा तर्क से बचने के लिए बेहतर है। इसके बाद के संस्करण के लिए वैकल्पिक तरीका घटनाओं हम हैंडल करना चाहते हैं की संख्या के रूप में कई नेस्टेड टैग का उपयोग किया जाएगा (हमारे मामले में, 2):
// Template
<ul>
{{#each post in controller}}
<li class="post-item" {{action showTheDetails post on="mouseEnter" target="controller"}}>
<span class="dummy" {{action hideTheDetails post on="mouseLeave" target="controller"}}
{{title}}
{{#if post.showDetails}}
<span>{{summary}}</span>
{{/if}}
</span<
</li>
{{/each}}
</ul>
और फिर नियंत्रक में:
// Controller
App.PostsController = Ember.ArrayController.extend({
showTheDetails: function(event) {
var post = event.context;
post.set('showDetails', true);
},
hideTheDetails: function(event) {
var post = event.context;
post.set('showDetails', false);
}
});
लेकिन मुझे लगता है कि आप सहमत होंगे कि यह उलझन में है। here देखें।
मामलों में जहां आप एंबर नियंत्रण दृश्य (Ember.TextField, Ember.TextArea, आदि) का उपयोग करने के अलावा कोई चारा नहीं है, लेकिन दृश्य में होने वाली घटनाओं पर कब्जा करना चाहते हैं। FYI करें
// Template
<legend>Add a comment</legend>
{{view App.CommentInputField valueBinding="comment"}}
// View
App.CommentInputField = Ember.TextField.extend({
focusOut: function(event) {
this.get('controller').validateComment();
},
keyDown: function(event) {
if (event.keyCode === 13) { // Enter key
this.get('controller').createComment();
return false;
}
}
});
- 1. परिवर्तन प्रबंधन को संभालने का सबसे अच्छा तरीका क्या है?
- 2. कस्टम नियंत्रण में जावास्क्रिप्ट को संभालने का सबसे अच्छा तरीका?
- 3. Magento - ब्लॉक में रूपों को संभालने का सबसे अच्छा तरीका?
- 4. कीबोर्ड "इनपुट" से इनपुट को संभालने का सबसे अच्छा तरीका
- 5. त्रुटि संदेशों को संभालने का सबसे अच्छा तरीका
- 6. एकाधिक स्क्रॉलिंग कॉलम को संभालने का सबसे अच्छा तरीका
- 7. कई आने वाले पैकेट को संभालने का सबसे अच्छा तरीका
- 8. एकाधिक कॉन्फ़िगरेशन फ़ाइल उदाहरणों को संभालने का सबसे अच्छा तरीका?
- 9. रेल का उपयोग करते समय रूबी में स्थिरांक को संभालने का सबसे अच्छा तरीका क्या है?
- 10. "एचजी आयात" को संभालने का सबसे प्रभावी तरीका क्या है?
- 11. सी # में एसिंक्रोनस HttpWebRequest अपवादों को संभालने का सबसे अच्छा तरीका क्या है?
- 12. पर्ल में अपवादों को संभालने का सबसे अच्छा तरीका क्या है?
- 13. ओपनजीएल में एफबीओ को संभालने का सबसे अच्छा तरीका क्या है?
- 14. एसवीएन में विक्रेता शाखाओं की शाखाओं को संभालने का सबसे अच्छा तरीका क्या है?
- 15. सी #/.NET में मसीह से पहले तिथियों को संभालने का सबसे अच्छा तरीका क्या है?
- 16. एमवीसी में दोहराने वाले फॉर्मों को संभालने का सबसे अच्छा तरीका क्या है?
- 17. AJAX अनुरोधों में सत्र टाइमआउट को संभालने का सबसे अच्छा तरीका क्या है?
- 18. smarty में रिकर्सन को संभालने का सबसे अच्छा तरीका क्या है?
- 19. लुकअप टेबल में I18N को संभालने का सबसे अच्छा तरीका क्या है?
- 20. क्लोजर में इस अनुक्रम परिवर्तन को संभालने का सबसे अच्छा तरीका क्या है?
- 21. एमवीवीएम के साथ चयनित इटैम ईवेंट को संभालने का सबसे आसान तरीका क्या है?
- 22. NSTextView में प्रमुख ईवेंट कैप्चर करने का सबसे अच्छा तरीका?
- 23. एकाधिक होस्ट पर PHP साइट के लिए सत्रों को संभालने का सबसे अच्छा तरीका क्या है?
- 24. वस्तुओं के बीच परिपत्र निर्भरताओं को संभालने का सबसे अच्छा तरीका क्या है?
- 25. UIPageControl को संभालने का सबसे अच्छा तरीका क्या है जिसमें स्क्रीन पर सभी फिट नहीं हैं
- 26. टूटी हुई छवियों को संभालने का सबसे अच्छा तरीका क्या है?
- 27. बहुत उच्च संकल्प छवियों को संभालने का सबसे अच्छा तरीका क्या है?
- 28. Django की वस्तुओं को संभालने का सबसे अच्छा तरीका क्या है .get?
- 29. उद्देश्य-सी में घातक त्रुटि से बाहर निकलने और संभालने का सबसे अच्छा तरीका क्या है?
- 30. सबसे अच्छा तरीका देता है
:: तो आप दृश्य में नियंत्रण दृश्य का विस्तार करने और परिभाषित ईवेंट हैंडलर्स ऐसे 'mouseEnter' या' mouseLeave' कार्रवाई सहायक (https में चर्चा को देखें द्वारा नियंत्रित नहीं किया जाना चाहिए के रूप में घटनाक्रम: // GitHub .com/emberjs/ember.js/मुद्दों/1011 और विशिष्ट टिप्पणी https://github.com/emberjs/ember.js/issues/1011#issuecomment-6367539) – pangratz
ठीक है, अंत में तो आप का एक बहुत कुछ है, तो ऐसी घटनाएं जो {{action}} सहायक विधि के लिए उपयुक्त नहीं हैं, आप कुछ दृश्यों को समाप्त कर देंगे। – TestDemoTest