码迷,mamicode.com
首页 > Web开发 > 详细

extjs5 一个容器中有几个组件公用一个控制器和一个模型

时间:2014-11-21 16:12:33      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   for   on   

  1 Ext.define(‘TestViewModel‘, {
  2   extend: ‘Ext.app.ViewModel‘,
  3 
  4   alias: ‘viewmodel.test‘, // connects to viewModel/type below
  5   constructor: function(config){
  6     //这里可以看出实例化了几次的 model
  7     console.log(config);
  8     this.callParent(config);
  9   },
 10 
 11   data: {
 12     firstName: ‘John‘,
 13     lastName: ‘Doe‘
 14   },
 15 
 16   formulas: {
 17     // We‘ll explain formulas in more detail soon.
 18     name: function (get) {
 19       var fn = get(‘firstName‘), ln = get(‘lastName‘);
 20       return (fn && ln) ? (fn + ‘ ‘ + ln) : (fn || ln || ‘‘);
 21     }
 22   }
 23 });
 24 
 25 Ext.define(‘TestView‘, {
 26   extend: ‘Ext.panel.Panel‘,
 27   layout: ‘form‘,
 28 
 29   requires: [
 30     ‘TestViewModel‘
 31   ],
 32 
 33   // Always use this form when defining a view class. This
 34   // allows the creator of the component to pass data without
 35   // erasing the ViewModel type that we want.
 36   viewModel: {
 37     type: ‘test‘  // references alias "viewmodel.test"
 38   },
 39 
 40   bind: {
 41     title: ‘Hello {name}‘
 42   },
 43 
 44   defaultType: ‘textfield‘,
 45   items: [{
 46     fieldLabel: ‘First Name‘,
 47     bind: ‘{firstName}‘
 48   },{
 49     fieldLabel: ‘Last Name‘,
 50     bind:{
 51       value: ‘{lastName}‘
 52     } 
 53   },{
 54     xtype: ‘button‘,
 55     text: ‘Submit‘,
 56     bind: {
 57       hidden: ‘{!name}‘
 58     }
 59   },{
 60     xtype: ‘demo‘
 61   }]
 62 });
 63 
 64 Ext.onReady(function () {
 65   Ext.create(‘TestView‘, {
 66     renderTo: Ext.getBody(),
 67     width: 400
 68   });
 69 });
 70 
 71 
 72 Ext.define(‘Demo‘, {
 73   extend: ‘Ext.panel.Panel‘,
 74   layout: ‘form‘,
 75   alias: ‘widget.demo‘,
 76 
 77   requires: [
 78     ‘TestViewModel‘
 79   ],
 80   // Always use this form when defining a view class. This
 81   // allows the creator of the component to pass data without
 82   // erasing the ViewModel type that we want.
 83   initComponent: function(){
 84     //this.ownerCt
 85     //var parent = this.findParentByType(‘panel‘);
 86     //console.log(parent.title);
 87 
 88     var f = this.getViewModel().get(‘firstName‘);
 89     console.log(f);
 90     this.callParent(arguments);
 91   },
 92   //这个地方为空,就可以和主容器使用相同的一个model,如果你viewModel:{type: test},就相当于又
 93   //实例化了一个model
 94   viewModel: {
 95 
 96   },
 97 
 98   bind: {
 99     title: ‘{firstName}‘
100   }
101   
102 });


/*
当一个容器中有几个组件公用一个控制器和一个模型
在组件中 使用 controller: ‘main‘时 可以容器组件共用一个,此时实例化容器时,也就是一个控制器
但是在 组件中 使用 viewModel:type: ‘main‘ 时,就需要考虑了,因为每个组件都会实例化一个
模型,如果想容器和组件共用一个模型,一个实例化。就在容器中设置viewModel:{type: ‘main‘},组件中设置 viewModel: {}, 为空就可以了
*/

extjs5 一个容器中有几个组件公用一个控制器和一个模型

标签:style   blog   io   ar   color   使用   sp   for   on   

原文地址:http://www.cnblogs.com/shaoshao/p/4112985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!