`

wijmo+javascriptmvc开发注意事项

阅读更多

下面是在使用wijmo+javascriptmvc中遇到的一些问题:
1、Ajax请求中,后台响应消息的格式必须与dataType一致,否则,在控制器中监听不到Model的一些默认事件(例如:created,updated,destroyed).
例子:
如果我们定义了一个Ajax请求,其dataType=json,
$.Model('Model',{
 create:function(attrs,success,error){
  return $.ajax(
    type:'POST',
    url:'/test' ,
    dataType:'json',
    success:success,
    error:error
    );
 }
},{});
如果/test响应回来的消息格式不是json格式,那么
$.Controller('Controller',{
 '{Model} created' : function(result){
  //不会触发这个事件
 }
},{});
2、如果对一个Model实例,多次使用POST请求,请在每次发送之前把Model的attrs清空,否则,下一次的POST请求会把上一次的attrs带上。
3、Ajax发送数据格式为Json时,需要3个步骤:首先,设置Ajax的ContentType为application/json,然后,把attrs格式化为Json对象,如$.toJson(attrs),最后,引入jquery/lang/json包。
4、在wijmo控件使用过程中,然后给一些控件添加自己的事件,不要在控制器的静态属性里添加,要在wijmo控件生成完后,再添加自己的事件。
例如:我们然后给accordion添加自己的点击事件,
$.Controller('Controller',{
 init:function(){
  $("#accordion").wijaccordion({
                header: "h3"
            });
  //应该在这里添加
  $('#selector').click(function(){
   //自己的动作,会触发
  });
 },
 //不应该这样添加
 '#selector click':function(){
  //自己需要处理的动作,不会触发
 }
}
5、如果在视图中再执行其它视图,需要在它的前面加两个等号“==”。我们在这里使用ejs视图做例子。
例如:<%==$.View("/test/init");%>
6、如果一个控件器可能绑定到不同的元素,请注意控件器中定义的一些事件的冒泡,所以,我们不管是否在多个元素中绑定,都需要在事件使用之前停止它的冒泡,方法:停止事件或者return false;
7、由于控件器中init只执行一次,所以,建议我们开发人员在开发时,使用事件来加载视图,这样我们可以刷新同一视图,并且可以在一个控件器实现多个视图。
例如:
$.Controller('Controller',{
 defaults:{
  listensTo:['list','add']
 },
 init:function(){
  
 },
 'list':function(el,ev){
  //加载列表视图
 },
 'add':function(el,ev){
  //加载创建视图
 }
},{});
8、在控件器已绑定到特定元素后,如果其它控件器想绑定到它的上面,请清空其它控件器的绑定。
$("selector").controller().destroy();
$("selector").remove();
$("selector").html("");

 

9、为元素绑定事件或者CSS样式时,请使用精确的选择器,而不要用笼统的选择器。

例如:

<button id="test">按钮</button>

为控件绑定点击事件:

使用$("#test").click();

而不使用$("button").click();

 

10、自定义项目所需要几种风格的模板,然后利用scaffold生成代码,减少开发量。

我们直接修改jquery/generate里面的模板即可。

 

11、注意在使用Model时,需要给它Id,否则,它一些默认的事件不会触发。

因为Model是否存在是通过Id来判断的,而且是指定id这个属性,其它的都不行。

我们在实际应用中可能模板就没有id这个属性,所以,我们需要给它id。

例如:Model修改属性,执行save方法时,需要执行update方法,那么Model必须存在id,否则,会触发

create,删除也一样,需要给它id,否则,在Model拿不到所需要的id参数。

 

12、JavascriptMVC3.3版本中,*.ejs文件中包含HTML文本或者数据表达式,不能2者混到同个ejs中,否则Build打包里,出现不能打包的情况。

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics