Почему не происходит событие изменения типа ввода, когда я устанавливаю значение этого типа ввода после визуализации представления? - PullRequest
1 голос
/ 12 апреля 2019

В базовом представлении, в его хэш события я добавил измененное событие типа ввода, которое запускает функцию и устанавливает значения для некоторых элементов в представлении. Теперь в представлении представления я установил значение для типа ввода, используя метод отложенного подчеркивания, чтобы значение устанавливалось после добавления представления к DOM. Это устанавливает значение типа ввода в представлении, но не запускает его измененное событие, что должно устанавливать значения для других полей внутри представления.

Любая помощь приветствуется!

SomeView = Backbone.View.extend({
    template: 'example.html',
    events: {
        "change #InputElementId": "UpdateFields"
    },
    renderTemplate: function () {
        var view = this,
            model = view.options.selectedModel;

        podiumApp.fetchTemplate(view.template, function (tmpl) {
            view.$el.html(tmpl(model.toJSON()));
        });
    },
    render: function () {
        var view = this,
        view.renderTemplate();
        _.defer(view.loadInputValue);    `enter code here`   

        return view;
    },
    loadInputValue: function () {

            $('#InputElementId').val(model.get('InputRangeValue'));
    },
    UpdateFields: function(){`enter code here`
    // Some logic`enter code here`
      console.log('Changed event fired');
    });

1 Ответ

1 голос
/ 12 апреля 2019

Установка значения программно не запускает событие change, вы должны запустить его самостоятельно

this.$('#InputElementId').val(model.get('InputRangeValue')).trigger('change');


  SomeView = Backbone.View.extend({
      template: 'example.html',
      events: {
        'change #InputElementId': 'updateFields'
      },
      initialize: function() {
        this.model = this.options.selectedModel;
      },
      renderTemplate: function() {
        podiumApp.fetchTemplate(this.template, function(tmpl) {
          this.$el.html(tmpl(this.model.toJSON()));
        }.bind(this));
      },
      render: function() {
        this.renderTemplate();
        _.defer(this.loadInputValue.bind(this));
        return this;
      },
      loadInputValue: function() {
        var value = this.model.get('InputRangeValue');
        this.$('#InputElementId').val(value).trigger('change');
      },
      UpdateFields: function() {
        // Some logic
        console.log('Changed event fired');
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...