Мой Ember Код не является обязательным видом ребенка на его контроллеры под ContainerView контроллераember.js containerview вид контроллер связывания не работает
У меня есть шаблон «метрика», для которого MetricsView не тянет название значения атрибута из его контроллера. Это дочерний вид в представлении контейнера, и это происходит со всеми другими представлениями, которые находятся под контролем.
Вот код snippent Я использую:
Это как мой Контейнер View выглядит
// Container View
App.DashboardContainerView = Ember.ContainerView.create({
childViews: [],
view1: App.MetricsView,
view2: App.ResultsView,
});
Это как мой взгляд Ребенок выглядит следующим образом: App.MetricsView = Ember.View. create ({ ] шаблон: Ember.TEMPLATES ["метрики"] });
Это как мой ребенок View контейнерной выглядит следующим образом: контроллер // Child View, которая не привязана с детьми View, // Требуется, чтобы сделать название от этого контроллера в шаблон Шаблон
App.MetricsController = Ember.ObjectController.extend({
title: 'Metrics Page', // To Be deleted later
content : []
metrics : [],
view: Ember.View.create({
templateName: 'metrics'
}),
show : function(petId, onDone, onFail) {
_get('/fetch_one', onDone, onFail);
},
});
ребенка// Здесь {{название}} не печатает на пользовательском интерфейсе, а "- Резюме" печатает
<script type="text/x-handlebars" data-template-name="metrics">
<div class='well well-large'>
<div class="container">
<div class="row">
<div class="span9">
<h4>{{title}}</h4>
<h4> -- Summary</h4>
</div>
<div class="span1">
<button {{action "toggle" }} class="close">×</button>
</div>
</div>
</div>
</div>
</script>
Некоторые другие поддерживаемые код:
var App = Ember.Application.create({
appName: 'Portal',
debug: true,
demomode: 1,
version: '0.0.1'
});
App.Router.map (function() {
this.resource('pets');
this.resource('pet', {path: ':pet_id'}, function(){
this.resource('dashboard');
this.resource('list', function() {
this.route('summary');
this.route('results');
});
});
});
//ApplicationRoute
App.ApplicationRoute = Ember.Route.extend({
setupController: function(){
},
});
App.IndexRoute = Ember.Route.extend({
redirect : function() {
this.transitionTo('pets');
}
});
App.PetsRoute = Ember.Route.extend({
model: function() {
return App.Pet.find();
},
renderTemplate: function() {
this.render({ outlet: 'rightpane' });
}
});
App.PetsController = Ember.ArrayController.extend({
sortProperties : [ 'first_name' ],
sortAscending : true
});
App.DashboardRoute = Ember.Route.extend({
setupController: function(){
var menuItems;
if (App.DashboardContainerView.get('childViews')) {
App.DashboardContainerView.get('childViews').pushObject(App.DashboardContainerView.view1);
App.DashboardContainerView.get('childViews').pushObject(App.DashboardContainerView.view2);
menuItems = this.controllerFor('petDashboardMenu').get('model');
$(menuItems).each(function(index, menuItem) {
if (menuItem.id == 1 || menuItem.id == 2) {
alert(menuItem);
}
}); //TODO: Make the menu buttons active for which view is added.
}
//this.controllerFor('pets').set('model', App.Preference.find({ name: "Dennis" }));
this.controllerFor('petDashboardMenu').set('model', App.PetMenuItem.find());
},
renderTemplate: function() {
this.render({ outlet: 'rightpane' });
}
});
App.DashboardController = Ember.ObjectController.extend({
name: 'Dashboard'
});
App.PetDashboardMenuController = Ember.ArrayController.extend({
toggleMenuItem: function(menuItem) {
var link = $(event.srcElement);
var childViews = App.DashboardContainerView.get('childViews');
if (link.hasClass('active')) {
link.removeClass('active');
var present = false;
switch (link.text()) {
case 'Summary':
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view1);
break;
case 'Results':
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view2);
break;
default:
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view1);
}
if(present >= 0) {
// ToDo : For All Menu Items
switch (link.text()) {
case 'Summary':
App.DashboardContainerView.get('childViews').removeObject(App.DashboardContainerView.view1);
break;
case 'Results':
App.DashboardContainerView.get('childViews').removeObject(App.DashboardContainerView.view2);
break;
default:
App.DashboardContainerView.get('childViews').removeObject(App.DashboardContainerView.view1);
}
App.log('Removed Summary : Removed : View Count : ' + App.DashboardContainerView.get('childViews').length);
} else {
App.log('Removed Summary : Already Not Present : View Count : ' + App.DashboardContainerView.get('childViews').length);
}
} else {
link.addClass('active');
var present = null;
App.log('Link Text : "' + link.text() + '"');
switch (link.text()) {
case 'Summary':
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view1);
break;
case 'Results':
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view2);
break;
default:
present = App.DashboardContainerView.get('childViews').indexOf(App.DashboardContainerView.view1);
}
if(present >= 0) {
App.log('Adding Summary : Already Present : View Count : ' + App.DashboardContainerView.get('childViews').length);
} else {
// ToDo : For All Menu Items
switch (link.text()) {
case 'Summary':
App.DashboardContainerView.get('childViews').pushObject(App.DashboardContainerView.view1);
break;
case 'Results':
App.DashboardContainerView.get('childViews').pushObject(App.DashboardContainerView.view2);
break;
default:
App.DashboardContainerView.get('childViews').pushObject(App.DashboardContainerView.view1);
}
App.log('Added Summary : View Count : ' + App.DashboardContainerView.get('childViews').length);
}
}
}
});
App.log = function(message) {
if(App.debug) {
console.log(message);
}
};
Любые указатели будут оценены?
Можете ли вы поместить это в jsFiddle и указать на то, что не работает так, как вы ожидаете? – Wildhoney