gpt4 book ai didi

javascript - Backbone 门面/中介模式挑战

转载 作者:行者123 更新时间:2023-11-29 22:25:02 24 4
gpt4 key购买 nike

我正在研究在 Backbone.js 中实现 FacadeMediator 模式的 aura( http://github.com/addyosmani/backbone-aura ) 示例。我希望有人熟悉这个概念.. 我正在尝试读取变量(例如 i 在这个例子中的外观的 renderComplete 部分。我如何(如果可能的话)访问 Appview 的函数/变量?

console.log(this.i);返回一个未定义的,所以我猜我在某处丢失了范围

define([
'jquery',
'underscore',
'backbone',
'text!templates/master.html',
'../aura/mediator',
'../aura/facade',
'../subscriptions'
], function($, _, Backbone, masterTemplate, Mediator, Facade){

var AppView = Backbone.View.extend({
el: "body",
i : 5,

template: _.template(masterTemplate),

facade: {
routeChange: Facade.extend("masterViewChange", "routeChanged", function(route){
console.log("Change view to " + this.i);
}),
renderComplete: Facade.extend("postMasterRender", "masterRendered", function(){
console.log(this.i);
})
},

events: {},

initialize: function() {
this.render();
Mediator.publish("masterRendered", this);
},

render: function() {
$(this.el).html(this.template());
}

});
return AppView;
});

最佳答案

当您发布“masterRendered”通知时,您会将对当前 View 的引用作为第二个参数 (this) 传递。第二个参数传递给您在 renderComplete 中定义的回调函数。所以你需要这样写:

function (obj) { console.log(obj.i); }

代替:

function () { console.log(this.i); }

问候

关于javascript - Backbone 门面/中介模式挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057511/

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