javascript - How to use one-way binding on emberjs? -
i'm starting play around ember 1 thing haven't been able wrap head around how use one-way bindings, consider following code:
html
<script type="text/x-handlebars"> <h1>some app</h1> <p> name is: {{name}} </p> <form {{action 'updatename' on="submit"}}> {{view ember.textfield valuebinding="name"}} <input type="submit" value="save"> </form> </script>
js
var app = ember.application.create(); app.applicationroute = ember.route.extend({ model: function() { return { name: 'john doe' } }, events: { updatename: function() { console.log('name updated!'); } } });
by default ember.textfield
's value bound model , viceversa means when type on text model , view updated live, i'm trying bind model textfield (so initial name displayed) update model when form submitted. there easy way it?
thanks in advance.
edit: reference updated fiddle use ember.binding.oneway
think end result cleaner @c4p answer: http://jsfiddle.net/x2lmc/3/ i'm not sure if doing $('#user-name').val()
field value right way it.
you can use observer, intermediate bound variable on controller, , event handler on controller accomplish want do.
the nameoncontroller
property of controller updated when namedidchange()
observer fires, making sure nameoncontroller
property initialize model's name
property , reflect future changes name
. bind intermediate property textfield
insulate name
property immediate typing changes , use event on controller read , set name
attribute when button clicked.
template:
{{view ember.textfield valuebinding="nameoncontroller"}}
js:
app.applicationcontroller = ember.objectcontroller.extend({ nameoncontroller: null, namedidchange: function() { var name = this.get('name'); this.set('nameoncontroller', name); }.observes('name'), updatename: function() { var controllername = this.get('nameoncontroller'); this.set('name', controllername); }, setname: function() { this.set('name', "new name"); } });
you can check changes name
property still reflected in text box clicking set new name
button.
Comments
Post a Comment