2

因为 Ajax 是异步的,所以会导致逻辑划分。这是我的控制器模块。对服务器的所有数据请求都经过这里并返回这里。

function cType( type ) {
    var object_pipe = MType[ type ].pre();
    if ( object_pipe !== 'complete' ) {
        var string_pipe = JSON.stringify( object_pipe );
        cMachine( 'pipe=' + string_pipe , function( text ) { // cMachine is an ajax Call - here is the asynch call back
            MType[ type ].post( text ); 
        } );
    }
}

我在下面创建了模块结构,以便由 ajax 的异步性质分割的“空间”现在组合回一个对象文字。pre()指在ajax调用之前,post()指在ajax调用之后。

/**
 **  MABAdder
 */
MType.MABAdder =
{
    pre : function() { // some logic and view elements called here
    },
    post : function( string_pipe ) { // some logic and view elements called here
    }
};

这种结构运作良好,只是现在我从技术上打破 MVC 模式的模型调用视图。

然而,代码整洁有序,可扩展性很好。

这是否破坏了健壮代码的任何核心原则?

对我来说,创建一个与 ajax 的异步特性一起工作的模式然后遵守严格的 MVC 模式更有意义。

这是一个可接受的框架种子吗?

4

1 回答 1

0

除了现在我从技术上打破 MVC 模式的模型中调用视图之外,这种结构效果很好。

然而,代码整洁有序,可扩展性很好。

这是否破坏了健壮代码的任何核心原则?

如果您的模型对象要求您的视图对象正常运行,是的。

从上面的示例中,我不确定您认为模型和视图是什么?

模型是对象的集合/域。它们是完全独立的,具有完整的数据和行为。

视图是对象的另一个领域,也是完全自包含的。您的 View 域的一个示例是一个网页,其中包含类 <button> <form> <table> <div> 等的对象。

异步应该对 MVC 没有影响。

于 2012-08-24T08:57:13.433 回答