EXTjs:Uncaught TypeError:controller.setView不是函数

dev*_*747 1 javascript extjs

我试图让这个在sencha小提琴中工作.如果我运行它,我在控制台日志中看到此错误"Uncaught TypeError:controller.setView不是函数".它仅在我从视图中删除控制器声明时才有效.我究竟做错了什么?

Ext.define('MyApp.controller.Whatever', {
    extend: 'Ext.app.Controller',
    alias: 'controller.Whatever',
    init: function() {
        alert("Yes!");
    }
});

Ext.define('MyApp.view.Whatever', {
    extend: 'Ext.form.Panel',
    controller: 'Whatever',
    title: 'Hello',
    width: 200,
    html: '<p>World!</p>',
    renderTo: Ext.getBody()
});

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('MyApp.view.Whatever');
    }
});
Run Code Online (Sandbox Code Playgroud)

基于下面的答案,这工作

Ext.define('MyApp.controller.Whatever', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.Whatever',
    init: function() {
        alert("Yes!");
    }
});

Ext.define('MyApp.view.Whatever', {
    extend: 'Ext.form.Panel',
    alias:'widget.Whatever',
    controller: 'Whatever',
    title: 'Hello',
    width: 200,
    html: '<p>World!</p>',
    renderTo: Ext.getBody()
});

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('MyApp.view.Whatever');
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 8

我认为你使用的是Ext JS 5或更高版本,所以请使用它.

Ext.app.ViewController而不是Ext.app.Controller.