Я читаю и пробую некоторые коды, но ничего не работает, как я хочу, чтобы ... это код, который у меня есть прямо сейчас.RadioButtonList in Ember, привязывая свойство модели к выбранному значению
index.html:
<div class="form-group">
<label for="accommodation">3.2. ACCOMMODATION (*)</label> <br />
<div>
{{view Ember.RadioButton name="accommodation" valueBinding='accommodation' selectionBinding="isSelected" value="Not Required"}}
Not Required
</div> <br />
<div>
{{view Ember.RadioButton name="accommodation" valueBinding='accommodation' selectionBinding="isSelected" value="Required"}}
Required
</div>
</div>
Посмотреть radiobutton.js:
Ember.RadioButton = Ember.View.extend({
tagName: "input",
type: "radio",
attributeBindings: ["name", "type", "value", "checked:checked:"],
click: function() {
this.set("selection", this.$().val())
},
checked: function() {
return this.get("value") == this.get("selection");
if (this.get("selection") == "Required") {
$('#panelAccommodation').style.display = "block";
}
if (this.get("selection") == "Not Required") {
$('#panelAccommodation').style.display = "none";
}
}.property()
Что я хочу от этих RadioButtonLists, чтобы иметь возможность получить значение выбранного элемента, так что я могу отправить его как POST для api и использовать выбранное значение, чтобы скрыть/показать div зависимости от выбранного значения. Есть идеи, как это сделать?
EDIT:
Я пытаюсь код andrusieczko и до сих пор у меня есть это:
radio.js:
App.RadioView = Ember.View.extend({
tagName: 'input',
type: 'radio',
attributeBindings: ['type', 'htmlChecked:checked', 'value', 'name'],
htmlChecked: function() {
return this.get('value') === this.get('checked');
}.property('value', 'checked'),
change: function() {
this.set('checked', this.get('value'));
},
_updateElementValue: function() {
Ember.run.next(this, function() {
this.$().prop('checked', this.get('htmlChecked'));
});
}.observes('htmlChecked')
});
Ember.Handlebars.helper('radio-button', App.RadioView);
контроллер:
App.EventsNewController = Ember.ObjectController.extend({
acRequired: 'Required',
acNotRequired: 'Not Required',
accommodation: null,
index.html :
<div class="form-group">
<label for="accommodation">3.2. ACCOMMODATION (*)</label> <br />
<div>
{{radio-button value=acRequired checked=accommodation}}
Not Required
</div>
<div>
{{radio-button value=acNotRequired checked=accommodation}}
Required
</div>
</div>
все еще не отправляет выбранное значение в запрос POST.
EDIT 2:
Я написал код, который во всех других аспектах ведет себя, как я хочу, чтобы это, но это все еще не является обязательным выбранное значение свойства, я хочу его.
Посмотреть radio.js:
Ember.Radio = Ember.View.extend({
tagName: "input",
type: "radio",
attributeBindings: ["name", "type", "value", "checked:checked:"],
click: function() {
this.set("selection", this.$().val())
if(this.get("selection") === "acRequired") {
$('#panelAccommodation').css("display", "block");
this.set("selection", "Required");
selectionBinding: "App.event.accommodation"
}
if (this.get("selection") === "acNotRequired") {
$('#panelAccommodation').css("display", "none");
this.set("selection", "Not Required");
selectionBinding: "App.event.accommodation"
}
if (this.get("selection") === "flRequired") {
$('#panelFlight').css("display", "block");
this.set("selection", "Required");
selectionBinding: "App.event.flight"
}
if (this.get("selection") === "flNotRequired") {
$('#panelFlight').css("display", "none");
this.set("selection", "Not Required");
selectionBinding: "App.event.flight"
}
},
checked: function() {
return this.get("value") == this.get("selection");
}.property()
});
index.html:
<!-- Accommodation - RadioButtonList -->
<div class="form-group">
<label for="accommodation">3.2. ACCOMMODATION (*)</label> <br />
<div>
{{view Ember.Radio name="accommodation" selectionBinding='accommodation' value="acNotRequired"}}
Not Required
</div>
<div>
{{view Ember.Radio name="accommodation" selectionBinding='accommodation' value="acRequired"}}
Required
</div>
</div>
контроллер new.js:
App.EventsNewController = Ember.ObjectController.extend({
accommodation: "Not Required",
flight: "Not Required",
actions: {
save: function() {
var self = this;
this.get('model').set('status', 'Created');
this.get('model').save().then(function() {
self.transitionToRoute('events.table');
});
}
}
});
PS: Я использую Ember версии 1.6.1
Я сделал несколько изменений в коде, но есть еще что-то у меня есть сомнения, я должен сделать еще редактировать (вопрос будет очень долго!), Просто стереть содержимое вопрос и заменить его (может быть запутанным для будущих посетителей) или начать другой вопрос по той же теме? –
эй, ты первый РЕДАКТОР выглядит хорошо; как вы отправляете запрос POST в контроллер? вы используете в нем свойство «проживания»? – andrusieczko
В конце я добавил свой контроллер для сообщения, но это не работает ... когда я делаю что-то вроде {{accomaiton}} в форме, которая правильно считывает значение и меняет его, когда меняю его, но когда форма отправлен запрос POST, всегда имеет значение null. –