gpt4 book ai didi

javascript - 有没有办法 console.log Backbone Marionette ItemView 中发生的所有事件

转载 作者:行者123 更新时间:2023-11-29 22:07:49 26 4
gpt4 key购买 nike

我有一个主干 Marionette View ,我在其中定义了许多事件。我想为我的 itemview 中发生的任何事件存储日志。我不想在每个数据上为我的审计数据编写函数调用,相反我想重写主干 Marionette 事件方法,以便它应用于我的所有 ItemView。

我尝试使用:

var originalTrigger = Backbone.Events.trigger;
Backbone.Events.trigger = function(){
console.log("Event Triggered:");
console.log(arguments.join(", "));
originalTrigger.apply(this, arguments);
}

但它对我没有任何作用。请帮忙

提前致谢

最佳答案

如果您检查 Backbone 源代码,您会看到类似这样的内容:

_.extend(Model.prototype, Events, {

哪里ModelEventsBackbone.Model 的本地别名和 Backbone.Events分别。这意味着来自 Backbone.Events 的方法将在您有机会包装之前被复制到模型、集合和 View 原型(prototype)中 Backbone.Events.trigger与您的审核。

您需要包装所有四个 trigger s 在加载 Backbone 之后但在加载任何其他内容(包括 Marionette)之前。像这样:

(function() {
var trigger = Backbone.Events.trigger;
var wrapper = function() {
console.log("Event Triggered:");
console.log(arguments.join(", "));
trigger.apply(this, arguments);
};
Backbone.Model.prototype.trigger = wrapper;
Backbone.Collection.prototype.trigger = wrapper;
Backbone.View.prototype.trigger = wrapper;
})();

<script src="backbone.js">之后但在 <script src="backbone.marionette.js"> 之前应该可以解决问题。

关于javascript - 有没有办法 console.log Backbone Marionette ItemView 中发生的所有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com