Ich bin neu in Ember und versuchen herauszufinden, wie das Datenrouting funktioniert. Ich habe eine 'Seitenbenachrichtigung' Komponente und eine Vorlage, die in meiner application.hbs Datei enthalten ist. Es behandelt Fehler oder andere Benachrichtigungen an Benutzer. Ich kann nicht herausfinden, wie man die Daten innerhalb der Komponente vom Application Controller einstellt.ember Set Komponentendaten von Application Controller
Wenn ein Benutzer eine Abmeldeaktion im Anwendungscontroller auslöst, sende ich ihn über ajax json request an den Server und muss dann die Seitenbenachrichtigungskomponente aktualisieren, wenn ein Fehler zurückgegeben wurde. Wie muss der Seitenbenachrichtigungs-Controller aussehen, um dies zu erreichen? Stelle ich die falsche Frage und sollte den Controller dafür nicht verwenden?
//app/templates/application.hbs
{{app-header}}
<div id="pagecontent">
{{page-notices}}
<div id="wrapper">
{{outlet}}
<div class="push"></div>
</div>
</div>
{{app-footer}}
//app/controllers/application.js
import Ember from 'ember';
import ENV from '/config/environment';
var $ = Ember.$;
export default Ember.Controller.extend({
session: Ember.inject.service('session'),
pagenotices: Ember.inject.controller("page-notices")
actions: {
logout: function() {
var self = this;
$.ajax({
dataType: "json",
method: 'GET',
url: ENV.APP.apiHost,
data: {p: 'logout'},
success: function(response){
if(response.success || (response.loggedin == false)){
self.get('session').invalidate();
self.transitionToLoginRoute();
} else {
self.get('pagenotices').set('pageerrors', response.error);
self.get('pagenotices').set('pageerrorsview', '');
}
}
});
},
},
transitionToLoginRoute: function() {
this.transitionToRoute('login');
},
});
//app/templates/components/page-notices.js
<div id="pagenotices" class="{{pagenoticeview}}">
<div id="pageerrors" class="error centered {{pageerrorsview}}">{{pageerrors}}</div>
<div id="pagemessages" class="notice centered {{pagemessagesview}}">{{pagemessages}}</div>
</div>
//app/components/page-notices.js
import Ember from 'ember';
import ENV from '/config/environment';
const { inject: { service }, Component } = Ember;
export default Component.extend({
pagenoticeview: 'hide',
pageerrors: '',
pageerrorsview: 'hide',
pagemessages: '',
pagemessagesview: 'hide',
});
Das hat es getan. Vielen Dank! – user6041966