这是使用模块和MVC模式创建类似“ hello world”的JS应用程序的非常基本的尝试。

var appModules = {};

appModules.exampleModul = (function () {

    var _data = ['foo', 'bar']; // private variable

    return {
        view: {
            display: function() {
                $('body').append(appModules.exampleModul.model.getAsString());
            },
        },
        model: {
            getAsString: function() {
                return _data.join(', ');
            },
        }

    };

})();

appModules.exampleModul.view.display();


效果很好,但是我不满意必须使用完整的对象路径appModules.exampleModul.model.getAsString()从视图中引用模型函数的方法。如何将公共模型方法公开给视图,以便可以简单地使用model.getAsString()之类的东西?还是我需要以不同的方式组织代码?

最佳答案

一种选择是您可以将那些对象转换为私有实现。

appModules.exampleModul = (function() {

            var _data = ['foo', 'bar'];
            // private variable

            var _view = {
                    display : function() {
                        $('body').append(_model.getAsString());
                    },
            };

            var _model = {
                    getAsString : function() {
                        return _data.join(', ');
                    },
            };

            return {
                view : _view,
                model : _model
            };
})();

09-11 18:40
查看更多