Uncaught ReferenceError: Невозможно обработать привязку "submit: function () {return add_list_form_submit}" - PullRequest
0 голосов
/ 20 января 2020

Мне действительно нужна помощь в устранении этой ошибки. У меня есть проект, который я унаследовал, используя Knockout JS. Мы будем благодарны за любую помощь.

Вот фрагменты для представления

<form action="" method="post" class="text-muted" ko="submit: add_list_form_submit">
  <div class="form-group">
    <label class="control-label">Travel purpose</label>
    <select ko="visible: purposes().length != 0, 
         value: selected, 
         attr: {name: !is_new_purpose() ? 'travel_purpose':'' }"
       class="form-control" 
       required>
       <option style="display: none" value="">Select or add purpose</option>
       <!-- ko foreach: purposes -->
       <option ko="value: $data, text: $data"></option>
       <!-- /ko -->
         <option value="__">Add a new category</option>
    </select>
    <input ko="visible: is_new_purpose, 
        value: travel_purpose, 
        value_update: 'input', 
        attr: { name: is_new_purpose()? Every 'travel_purpose':'' }" 
      class="form-control" 
      type="text" 
      placeholder="enter new travel purpose" />
  </div>
<form>

Вот модель представления, настроенная как предыдущие.

function EnterTravelInfoViewmodel() {
    var etm = this;
    // Observables
    etm.purposes    = ko.observableArray();
    etm.selected    = ko.observable('');
    etm.travel_purpose    = ko.observable('');

    // Subscriptions
    etm.selected.subscribe(function(s) {
    });
    // Computed
    etm.is_new_purpose = ko.computed(function() {
        return etm.purposes().length == 0 || etm.selected() == '__';
    });

    // Event handlers
    etm.add_list_form_submit = function() {
if ((!etm.is_new_purpose() && etm.selected() == '') || (etm.is_new_purpose() && etm.travel_purpose() == '')) {
swal({title: "Hold on", text: "Specify a purpose for this travel", type: 'info'});
     return false;
}
     return true;
};

// Init
//------------Get Travel Purposes payload------------
$.post(Me.url_prefix+'lib/bg-manage-travel.php?get_request=get-travel-purposes', {}
, function(data) {
etm.purposes( JSON.parse(data) );
});

Есть несколько других моделей представления, которые связаны через переключатель l oop

$(function() {
    switch(where) {
        case 'login':
            VM = new LoginViewmodel();
            break;
        case 'manage-production-stages':
            VM = new ManageProductionStagesViewmodel();
            break;
        case 'enter-travel-info':
            VM = new EnterTravelInfoViewmodel();
            break;
    }
    ko.applyBindings(VM);
});

Также обратите внимание, что привязка данных была переназначена, поэтому я использую "ko" в представлении.

//----------Change `ko` attribs to `data-bind`-------------
$(function() {
    $('[ko]').renameAttr('ko','data-bind');
});

Еще раз, спасибо заранее.

...