【发布时间】:2013-01-24 05:28:46
【问题描述】:
我使用 Javascript 创建了一个小型数独应用程序。现在我正在尝试将该 javascript 代码转换为 extjs (4.1.1a) 代码。我已经通过docs 了解了MVC 架构,但对于我是初学者来说,它似乎并不那么详细。
有人可以根据我的数独应用解释 Extjs 的 MVC 架构吗?
我的数独应用代码设计如下:
以上设计说明如下:
-
container (blue) --> parent panel (grey) --> child panel (red) -
“父面板”有九个,每个“父面板”有九个“子面板”。
-
“父面板”和“子面板”的 HTML 元素是使用 for 循环动态生成的。
-
我在“子面板”上编写了诸如
KeyDown事件和click事件之类的事件。 -
我也写了一些函数,比如
checkGroup() --> 检查每个“父面板”中是否有重复的数字 checkVertical() --> 在“容器”的每一垂直行中检查重复数字 checkHorizontal() --> 检查“容器”的每一水平行是否有重复数字
编辑:(未完成和非结构化代码)
app.js(主 js 文件)
Ext.application({
name: 'Game',
appFolder: 'app',
controllers: ['Sudoku']
});
controller('app' 文件夹 --> 'controller' 文件夹 --> Sudoku.js)
//By using 'controller', trying to call 'view' here
Ext.define('Game.controller.Sudoku', {
extend: 'Ext.app.Controller',
init: function () {
console.log("controller init");
},
onLaunch: function () {
console.log("controller onLaunch");
},
views: ['Sudoku']
});
查看('app' 文件夹 --> 'view' 文件夹 --> Sudoku.js)
Ext.define('Game.view.Sudoku', {
extend: 'Ext.window.Window', //what should I extend here for view?
initComponent: function () {
//my complete sudoku js file here
console.log("hello");
}
});
【问题讨论】:
-
您需要一个数独控制器,但已将其命名为 users...
-
@sra 抱歉打错了,我改了。尽管我在我的 chrome 控制台中看不到“你好”。如文档中所述,我扩展了控制器和视图。我在这里做对了吗?
-
@sra 我不知何故进入了控制器部分。 (显示控制器的消息)。现在它只是不显示“查看”消息,即“你好”。我不明白我哪里出错了。
-
你需要告诉控制器他应该做什么。例如,当他加载时加载您的视图。为此,您可以使用 refs(还有其他一些方法,但我认为 refs 在您的情况下是最简单的)注意在调用它们之前定义 refs。
-
@sra 你能告诉我在哪里给 ref(ref 似乎是私人的)吗?我什至在sencha forums 上问过同样的问题
标签: extjs extjs4 extjs4.1 extjs-mvc