Jestem nowy w emberjs (1.0.0-RC1), którego używam na szczycie szyn. Chcę przesłać formularz sesji bez użycia modelu ember. Wydaje mi się, że jest to lepsze, ponieważ w mojej aplikacji nie ma prawdziwego modelu sesji. Na razie to działa jest następujący:
#login_controller.js.coffee
SkillUp.LoginController = Ember.ObjectController.extend
# Just a title to pass to the template, for fun
title: "Login Controller"
submit: (controller) ->
model = @get "model"
model.get("transaction").commit()
#session.js.coffee
SkillUp.Session = DS.Model.extend
email: DS.attr "string"
password: DS.attr "string"
#login_route.js.coffee
SkillUp.LoginRoute = Ember.Route.extend
setupController: (controller) ->
controller.set "title", "Login"
controller.set "content", SkillUp.Session.createRecord()
<!-- login.handlebars -->
<h2>template: {{title}}</h2>
<form>
{{#with controller}}
email: {{view Ember.TextField valueBinding="email"}}
password: {{view Ember.TextField valueBinding="password" type="password"}}
<button {{action submit}}>Submit</button>
{{/with}}
</form>
Jak powiedziałem, moim celem jest usunięcie session.js.coffee, ponieważ nie istnieje dla niego model szyny.
Dziękujemy za pomoc
Odpowiedzi:
1 dla odpowiedzi № 1Nie polecam wdrażania $.ajax
bezpośrednio. Zalecam zachowanie modelu DS. To powinno ułatwić testowanie, jeśli używasz DS.FixtureAdapter
. Idealnie powinieneś trzymać wszystkie ajax za warstwą w aplikacji. Nie powinieneś wpadać $.ajax
w różnych częściach aplikacji.
EDYCJA: tylko dlatego, że nie masz modelu sesji w backendu, nie oznacza, że nie możesz mieć go w interfejsie. Aplikacja ember będzie miała własne modele. Nie przejmuj się mapowaniem 1: 1.
0 dla odpowiedzi nr 2
Możesz po prostu użyć $ .ajax w metodzie kontrolera, aby ręcznie wysłać wartości do szyn przy użyciu jQuery.
$.ajax("/sessions", {
type: "POST",
data: {
email: this.get("email"),
password: this.get("password)
},
...
});
Dodaj odpowiednie procedury obsługi dla sukcesu i niepowodzenia.