未捕获的 ReferenceError:无法处理绑定“提交:函数()return add_list_form_submit ”

Posted

技术标签:

【中文标题】未捕获的 ReferenceError:无法处理绑定“提交:函数()return add_list_form_submit ”【英文标题】:Uncaught ReferenceError: Unable to process binding "submit: function()return add_list_form_submit "未捕获的 ReferenceError:无法处理绑定“提交:函数()return add_list_form_submit ” 【发布时间】:2020-05-06 20:18:06 【问题描述】:

我真的需要帮助来调试这个错误。我有一个使用 KnockoutJS 继承的项目。我们将不胜感激。

这是视图的 sn-ps

<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>

这里是 Viewmodel,设置为之前的。

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) );
);

还有其他几个通过开关循环绑定的视图模型

$(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');
);

再次感谢您。

【问题讨论】:

试图绑定的视图模型敲除没有function add_list_form_submit() 可能,VM 没有被分配到 new EnterTravelInfoViewmodel(),而是在你的 switch 中分配了其他东西。 【参考方案1】:

view-model 没有绑定,因为浏览器缓存了我的历史记录。清除浏览器缓存解决了这个问题。

【讨论】:

以上是关于未捕获的 ReferenceError:无法处理绑定“提交:函数()return add_list_form_submit ”的主要内容,如果未能解决你的问题,请参考以下文章

KO ReferenceError:无法处理绑定

未捕获的 ReferenceError:在初始化之前无法访问“GA”

未捕获的 ReferenceError:未定义 showCategory

PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

未捕获的 ReferenceError:未定义数据

未捕获的 ReferenceError:未定义导出并且需要