0

致力于为我自己的一个项目创建一个简单的 MVC 框架。我没有使用公开的,而是决定创建一个,因为我的需求非常不寻常。

我已经为控制器和视图设置了结构,但是,我在创建模型结构时遇到了一些问题。

这就是我的模型结构:

model.models = function(args){

    init: function(){

        this.on_init();
    },

    on_init: args.on_init || noop,
    data: args.data || {},

};

因此,我将其称为我想要创建的所有模型的基本公式。比如我想创建员工、通知等一些模型,以此为基本蓝图,然后做一些基本的调整。

我打电话:

model.employees = new model.models({

    on_init: function(){
        //something specific
    },

    data: {
        //defaults
    }

});

到目前为止,我们都很好,但这就是我遇到麻烦的地方。现在,当我想创建最终结果模型时,我无法从对象创建新对象。它必须是一个函数。

我唯一能想到的是为第二种方法创建一个返回函数,但这本身就会带来一些问题。我已经对其他 MVC 代码进行了一些研究,但我无法理解它。

任何帮助将不胜感激!

4

2 回答 2

0

做了很多摆弄,想出了这个:

var blueprint = function(args){

return {

    data: args.data,
    on_init: args.on_init,
    create: function(args){

        this.on_init();

        return {

            data: this.data,

            whatever: function(){
                console.log(args);
            }
        };
    }

};

};

var notifs = new blueprint({

on_init: function(){
    console.log('init');
},

data: {
    test: 'test'
}

});

var res = notifs.create('test');

console.log(blueprint);
console.log(notifs);
console.log(res);

它带有一个可以工作的 main 函数,notifs 函数可以为每个单独的对象类型定制,然后调用 create 方法将创建 end 方法。

繁荣!

于 2012-11-30T19:03:17.563 回答
0

这是你想要的吗 ?

model.models = function(args){
    var noop = function(){};

    var o = {};
    var init = args.on_init || noop;
    var data = args.data || {};

    init();
    //handle other initialization
    //o.a = xx;
    //o.b = xx;
    //o.c = data.xxx;
    //....

    return o;
}

那么就可以使用新的了,而且不会出现语法错误

于 2012-11-30T18:01:34.653 回答