2012-03-08 68 views
2

我想知道Sencha Touch类'Ext.app.Controller'的'refs'属性。 我看到一个简单的contactForm被构建的视频教程。不,我试图建立一个接触的形式为我的应用程序,我得到一个错误:“遗漏的类型错误:对象的翻译:有没有一种方法“getContactForm”Sencha Touch 2.0控制器参考属性不起作用?

这里是我的控制器

Ext.define('MyFirstApp.controller.Main', { 
extend: 'Ext.app.Controller', 
views: ['Viewport', 'Home'], 

refs: [ 
    { 
     ref: 'contactForm', 
     selector: '#contactForm' 
    } 
], 

init: function() { 
    this.control({ 
     'button[action=submitContact]': { 
      tap: 'submitContactForm' 
     } 
    }); 
}, 

submitContactForm: function() { 
    var form = this.getContactForm(); 
    form.submit({ 
     url: 'contact.php' 
    }); 
} 

} );

我猜这是'refs',视频中的人说“getContactForm”方法将因为“contactForm”的“ref”属性而创建,但事实并非如此。我在这里做错了什么?..感谢您的帮助!

回答

0

它看起来好像你可能有refs配置错误。这里有一个简单的控制器:

Ext.define('App.controller.Main', { 
    extend: 'Ext.app.Controller', 
    config: { 
    refs: { 
     main: 'mainpanel' 
    } 
    } 
}); 

mainpanelxtype或者可能是一个CSS选择器和main会给你getMain()喜欢什么谈到了视频。

1

我同意jeremygerrits,我不能确定这是定义refs的正确语法。

基础上documentation,我宁愿做这样的:

Ext.define('MyFirstApp.controller.Main', { 
    extend: 'Ext.app.Controller', 

    views: ['Viewport', 'Home'], 

    config: { 
     refs: { 
      contactForm: '#contactForm' 
     } 
    } 

    init: function() { 
     this.control({ 
      'button[action=submitContact]': { 
       tap: 'submitContactForm' 
      } 
     }); 
    }, 

    submitContactForm: function() { 
     var form = this.getContactForm(); 
     form.submit({ 
      url: 'contact.php' 
     }); 
    } 
}); 

参见:http://docs.sencha.com/touch/2-0/#!/guide/controllers

2

裁判属性财产煎茶触摸2.0开发者预览版改为测试/最终版本。所以,你写的是正确的dev预览,但目前它只是名称值对。为你的情况:

refs: { 
    contactForm: '#contactForm' 
} 
+0

是的谢谢你,这对我的作品:) – Phil 2012-03-09 14:11:19

相关问题