Проблема с наблюдателем Ember js

Когда щелкнули по встроенному радио, наблюдая за щелкнутым радио, используя приведенную ниже функцию с именем bindingChanged. Но как только нажимается переключатель, значение не наблюдается и, следовательно, не попадает в метод bindingChanged. Раньше это нормально работало с версией ember 0.9.8. Это не работает с последней версией Ember. Любая идея, почему наблюдатель не работает должным образом?

//valueBinding snippet
App.showSampleController = Ember.Object.create({
    content : App.CreateSampleModel.create()
});

App.CreateSampleModel= Ember.Object.extend({
    id :''
});

//View Template -->
App.sampleView = Em.View.extend({
    click:function(){
        App.showSampleController.set('content',App.CreateSampleModel.create({id:1})); 
    }
});

Фрагмент панели управления:

{{ view Ember.RadioButton group="default" name="sampleRadio"  option=content.id valueBinding="App.showSampleController.content.id" }}

Ниже приведен код радиокнопки

Ember.RadioButton = Ember.View.extend({
    title: null,
    checked: false,
    group: "radio_button",
    disabled: false,
    customId:"open",

    classNames: ['ember-radio-button'],

    defaultTemplate: Ember.Handlebars.compile('<input type="radio" {{ bindAttr disabled="disabled" name="group" value="option" checked="checked" id="customId" }} />{{title}}'),

    bindingChanged: function(){
        if(this.get("option") == get(this, 'value')){
            this.set("checked", true);
            //invoking click when ember radio is accessed/checked/clicked!!
            this.$('input:radio').click();
        }
    }.observes("value"),

    change: function() {
        Ember.run.once(this, this._updateElementValue);
    },

    _updateElementValue: function() {
        var input = this.$('input:radio');
        set(this, 'value', input.attr('value'));
    }
});

Вот исходная скрипта, а ниже еще одна скрипта, и вы можете увидеть ошибку в скрипте ниже. Основное отличие состоит в том, что он имеет последнюю версию Ember и полностью ломает другую скрипку.


person user1338121    schedule 27.05.2012    source источник


Ответы (1)


Проблема с контекстом представления в шаблонах. У вас должен быть такой шаблон, как

<label><input type="radio" {{ bindAttr disabled="view.disabled" name="view.group" value="view.option" checked="view.checked"}} />{{view.title}}</label>

Здесь рабочая версия. см. здесь

person Manoharan    schedule 12.12.2012