2013-08-20 68 views
5

tôi đã bắt đầu làm việc trên ember.js chỉ một ngày trước đó. tôi không biết cách lấy giá trị hộp văn bản trong khi gửi. tôi đã cố gắng như thế nàyCách nhận giá trị hộp văn bản trong ember.js

đây là html

<script type="text/x-handlebars" data-template-name="index"> 
    <div > 
    <p>{{view Ember.TextField valueBinding="fname"}}</p> 
    </div> 
    <div> 
    <p>{{view Ember.TextField valueBinding="lname"}}</p> 
    </div> 
    <button {{action save}}>submit</button> 
    </script> 

đây là ember.js tôi nộp

  App = Ember.Application.create(); 
      App.IndexController = Ember.ObjectController.extend({ 

      save:function() 
      { 
       var fname=this.get('fname'); 
       var lname=this.get('lname'); 
       alert(fname+','+lname); 


      } 
      }); 

bất cứ khi nào tôi đang nhấp vào nút gửi, tôi đang bị undefined trong alert.so cách để có được giá trị? tôi hy vọng mọi người sẽ giúp tôi tiếp tục trong ember.js

+0

Tôi đã trả lời một câu hỏi rất giống nhau ngày hôm qua. Có thể bạn có thể xem xét nó: http://stackoverflow.com/questions/18309544/how-do-i-handle-form-submission-in-ember-js/18323040#18323040 – mavilein

Trả lời

3

Vấn đề của bạn là biểu mẫu của bạn không có mô hình. Bạn có thể cung cấp nó bằng cách sử dụng móc model hoặc setupController.

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return {}; 
    }, 
    // or 
    setupController: function(controller) { 
    controller.set('model', {}); 
    } 
}); 

Ngoài ra một số lời khuyên:

Sử dụng action name on="submit" vào biểu mẫu, thay vì action name trong nút gửi. Vì vậy, bạn có thể thực hiện hành động khi người dùng nhấn phím enter, trong đầu vào.

input type="text" helper là một phím tắt cho view Ember.TextField

<script type="text/x-handlebars" data-template-name="index"> 
    <form {{action save on="submit"}}> 
     <div > 
      <p>{{input type="text" valueBinding="fname"}}</p> 
     </div> 
     <div> 
      <p>{{input type="text" valueBinding="lname"}}</p> 
     </div> 
     <button>submit</button> 
    <form> 
</script> 

Here a live demo

2

Đó là thật sự tốt đẹp hướng dẫn bởi mavilein.

Chúng tôi cũng có thể thực hiện ở cấp bộ điều khiển.

App.IndexController = Ember.ObjectController.extend({ 
     content:function(){ 
      return {fname:null,lname:null} 
      }.property(), 
     save:function() 
     { 
      var fname=this.get('fname'); 
      var lname=this.get('lname'); 
      alert(fname+','+lname); 


     } 
}); 

Hoặc chúng ta có thể làm điều đó

App.IndexController = Ember.ObjectController.extend({ 
     fname:null, 
     lname:null, 
     save:function() 
     { 
      var fname=this.get('fname'); 
      var lname=this.get('lname'); 
      alert(fname+','+lname); 


     } 
     }); 
10

trong js như thế này

App.WebFormController = Ember.Controller.extend({ 
    fname: null, 
    lname: null, 
    save: function() { 
     var fname = this.get('fname'); 
     var lname = this.get('lname'); 
     alert(fname + ',' + lname); 
    } 
}); 

mà không cần một mô hình

trong mẫu như

này 012.
+2

Câu trả lời hay, cảm ơn bạn. Đối với những người đến qua câu hỏi này ngay bây giờ, các phiên bản mới hơn của Ember (ít nhất là của v 1.10+) sử dụng 'giá trị' thay vì 'valueBinding'. Giống như vậy: '{{input type =" text "value = fname}}' (thông báo thiếu dấu ngoặc kép xung quanh fname). –

1

Dưới đây đang làm việc cho tôi:

cshtml: Trong kịch bản trên thẻ xác định dữ liệu mẫu-name = "text"

<script type="text/x-handlebars" data-template-name="text"> 
    {{view Ember.TextField value=view.message}} 
    {{view Ember.TextField value=view.specy}} 
    {{textarea value=view.desc id="catdesc" valueBinding="categor" cols="20" rows="6"}} 

    <button type="submit" {{action "submit" target=view}}>Done</button> 
    </script> 

app.js:

App.TextView = Ember.View.extend({ 
templateName: 'text', 
message:'', 
specy: '', 
desc:'', 
actions: { 
    submit: function (event) { 
     var value = this.get('specy'); 
     var spc = this.get('message'); 
     var de = this.get('desc'); 
    } 
} 
}); 
Các vấn đề liên quan