2011-12-30 12 views
8

मैं कैसे एक बटन से इस दृश्य समारोह insertNewLine को गति प्रदान करने पर सलाह के लिए देख रहा हूँ से एक पाठ क्षेत्र में एक कार्यवाही प्रारंभ (नीचे देख सकते हैं और टेम्पलेट देखें)। मुझे लगता है कि इस कोड को ढूढ़ने का शायद एक बेहतर तरीका है। आपकी सहायता के लिए धन्यवाद.एक बटन

// view 
App.SearchView = Ember.TextField.extend({ 
    insertNewline: function() { 
    var value = this.get('value'); 

    if (value) { 
     App.productsController.search(value); 
    } 
    } 
}); 

// template 
<script type="text/x-handlebars"> 
    {{view App.SearchView placeholder="search"}} 
    <button id="search-button" class="btn primary">Search</button> 
</script> 

उत्तर

12

आप अपने TextField पर mixin Ember.TargetActionSupport का उपयोग करें और triggerAction() निष्पादित जब insertNewline शुरू हो जाती है सकता है। देखें http://jsfiddle.net/pangratz666/zc9AA/

Handlebars:

<script type="text/x-handlebars"> 
    {{view App.SearchView placeholder="search" target="App.searchController" action="search"}} 
    {{#view Ember.Button target="App.searchController" action="search" }} 
     Search 
    {{/view}} 
</script> 

जावास्क्रिप्ट:

App = Ember.Application.create({}); 

App.searchController = Ember.Object.create({ 
    searchText: '', 
    search: function(){ 
     console.log('search for %@'.fmt(this.get('searchText'))); 
    }  
}); 

App.SearchView = Ember.TextField.extend(Ember.TargetActionSupport, { 
    valueBinding: 'App.searchController.searchText', 
    insertNewline: function() { 
     this.triggerAction(); 
    } 
}); 
+0

बहुत बढ़िया है, धन्यवाद। मैं App.searchController के लिए मिश्रण पर अनुमान लगा रहा हूं, केवल ऐप पर नहीं। खोज दृश्य। –

+0

ओह, आप सही हैं। मैंने कोड अपडेट किया है। – pangratz

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