ExtJS5如何在没有SenchaCmd的情况下使用ViewController和ViewModel

时间:2014-10-21 02:38:13

标签: viewmodel alias viewcontroller extjs5

问题

我曾经在MVC中使用extJs 4,现在我想更改为extjs 5并将ViewModel和ViewController添加到其中。但我没有权限安装SenchaCmd来生成和编译应用程序,如指南所述。我想知道SenchaCmd是否必然在ExtJs5中,因为当我为视图添加一个ViewController时,会出现错误 - 未捕获的错误:[Ext.createByAlias]无法识别的别名:controller.mainViewController。

如果没有SenchaCmd,但我想为我的应用添加ViewController和ViewModel,我该怎么办?

代码

MyApp.view.main.MainView.js

Ext.define('MyApp.view.main.MainView', {
    extend: 'Ext.tab.Panel',
    alias: 'widget.MainView',

    //  requires: ['main.MainViewModel'],
    controller: 'mainViewController',
    //    viewModel: {
    //        type: 'mainView'
    //    },

    tabPosition: 'left',
    tabRotation: 0,

    defaults: {
        textAlign: 'left',
        bodyPadding: 15
    },

    items: [{
        title: 'test',
        items: [{
            xtype: 'button',
            listeners: {
                onClick: 'onTest'
            }
        }]
    }]
});

CaTools.view.main.MainViewController.js

Ext.define('CaTools.view.main.MainViewController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.mainViewController',

    onTest: function() {
        console.log('test -- ');
    }
});

错误

  

Error - Uncaught Error: [Ext.createByAlias] Unrecognized alias: controller.mainViewController

非常感谢!!

1 个答案:

答案 0 :(得分:0)

Sencha CMD正在为你做的一切 - 在这种情况下,无论如何 - 正在构建一个引导程序文件。作为其中的一部分,它知道当它引入View时,它看到视图具有viewModel和controller属性,它按惯例(模型和控制器)查找ViewModel和ViewController类。

所以你可以自己做。只需require View中的ViewModel和ViewController类,就像require任何其他类一样。

(作为替代方案 - 将ViewModel和ViewController定义为View的Javascript文件中的其他类;这种方式在查看时始终加载