Javascript-Web应用程序结构

可可

我在Javascript应用程序各部分之间管理数据时遇到问题。我试图坚持使用“ MVC”模式,所以以MVC术语来讲,我无法使我的某些“ C”(控制器)功能访问“ M”(模型)给出的数据。具体来说,如果不使数据全局(我想避免这种情况),就无法使事件函数到达数据。

伪造的情况只是为了向您展示我的意思:

HTML:

<body>
    <div onclick="func()"></div>
</body>

JS:

var Data = function(num) {
    this.num = num;
}

window.onreadystatechange = function() {
    var data = new Data(5);
}

function func() {
    //How do i access the object "data" from here?
}

问题是:如何使事件处理程序访问数据?

TGH
var Data = function(num) {
    this.num = num;
}

var data;

window.onreadystatechange = function() {
    data = new Data(5);
}

function func() {
    //data.num
}

您必须在func可以访问的范围内声明数据

如果您担心全局变量,可以这样做

var service = {};

(function(service) {
    var Data = function(num) {
        this.num = num;
    }

    var data;

    window.onreadystatechange = function() {
        data = new Data(5);
    }

    service.func = function func() {
        //data.num
    }
})(service);


//call the function
service.func();

这将在自执行闭包中进行调用,这将阻止变量进入全局范围。您可以传入服务实例并将func方法附加到该实例,以便能够对其进行调用。jQuery插件通常遵循这种模式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章