有没有人使用extjs作为前端构建了一个grails应用程序?
您是否有任何陷阱或陷阱需要分享?
它看起来像JSON由默认情况下它从ExtJS的预期大不相同Grails的输出格式,但它只是一个自定义的事情JSON在grails身边吗?
我正在设计带有文本的ExtJS按钮Show,当我点击时button,我想将文本更改为Hide
我该怎么办呢
Plz救救我.
提前致谢
像微软OS中的窗口(xp,vista,7等)......
如果主窗口创建模态窗口,则用户无法访问主窗口
(包括关闭和访问工具栏等).
我想用extjs做一个类似的.这是我的模态示例:
Ext.create("Ext.Window", {
title: 'aa',
width: 200,
height: 150,
html: 'a',
tbar: [{
text: 'aa',
handler: function() {
Ext.create("Ext.Window", {
title: 'aa',
width: 150,
closable: false,
height: 100,
html: 'b',
ownerCt: this,
modal: true
}).show();
}
}]
}).show();
Run Code Online (Sandbox Code Playgroud)
问题是,它只是禁用主窗口的主体,用户仍然可以访问主工具栏,也可以关闭它.
我的问题是如何制作完整的模态?或者如果无法完成,如何禁用主窗口,如果出现模态窗口,我在模态获胜时使用了监听器显示,但问题是我无法从该监听器访问主窗口.
编辑:
到目前为止这是我的代码:
Ext.create("Ext.Window", {
title: 'aa',
width: 200,
height: 150,
html: 'a',
maskOnDisable: false,
tbar: [{
text: 'aa',
handler: function(a) {
var parent = a.up("window");
parent.disable();
Ext.create("Ext.Window", {
title: 'aa',
width: 150,
height: 100,
html: 'b',
listeners: …Run Code Online (Sandbox Code Playgroud) 我有tabpanel- 它是main形式(视图).在这里tabpanel我定义了不同的标签 - xtype:'panel'.
所以,我有一个main(控制器),main视图和一些标签视图.选项卡的视图在main视图中引用.
我想在控制器中定义activate一些孩子的事件的监听器.panelmain
我怎样才能做到这一点?
该main控制器:
Ext.define('KP.controller.account.apartment.Main', {
extend: 'Ext.app.Controller',
views: ['account.apartment.Main',
'account.apartment.Requisites'
],
models: ['account.apartment.Requisites'
],
stores: ['account.apartment.Requisites'
],
init: function () {
}
});
Run Code Online (Sandbox Code Playgroud)
的main观点:
Ext.define('KP.view.account.apartment.Main', {
extend: 'Ext.window.Window',
alias: 'widget.ApartmentData',
height: 566,
width: 950,
activeItem: 0,
layout: {
type: 'fit'
},
autoShow: false,
initComponent: function() {
var me = this;
Ext.applyIf(me, {
items: [ …Run Code Online (Sandbox Code Playgroud) 我创建了这个脚本,用正确的类打开一个div并关闭其他的.
function showhide(id) {
if (document.getElementById) {
var divid = document.getElementById(id);
var divs = document.getElementsByClassName("hideable");
for (var i = 0; i < divs.length; i = i + 1) {
divs[i].style.display = "none";
}
divid.style.display = "block";
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
是否可以制作一些动画,如fadout,easyout而不是仅通过显示选项显示它?
我正在尝试实现自定义验证规则来验证是否选中了复选框.
但是我收到了一个错误
error_handler.js:46 EXCEPTION: _this.subscribe is not a function
Run Code Online (Sandbox Code Playgroud)
当我尝试添加自定义验证器时
validator.ts
import {Control} from "angular/common";
interface ValidationResult {
[key: string]: any;
}
export class CustomValidators {
static validateChecked(c: Control): ValidationResult {
return (c.value);
}
}
Run Code Online (Sandbox Code Playgroud)
Component.ts
import {Component} from '@angular/core';
import {FormBuilder, FormGroup, Validators, FormControl} from '@angular/forms';
import {CustomValidators} from './validators.ts'
@Component({
selector: 'wizard',
templateUrl: './template.html',
})
/**
* @todo - check how first select is automatically active
* @todo - export form presets to form class
*/
export class …Run Code Online (Sandbox Code Playgroud) 我有这个对象:
object = {
key:["1","2","3","4","5"],
key2:["5","7","8","9"]
}
Run Code Online (Sandbox Code Playgroud)
如何删除对象键以及如何删除对象键值?
我加载我的商店如下:
store.load({
params: {
paramMap
},
callback: function(records, options, success) {
if (success) {
var form = formPanel.getForm();
var jsonStr = Ext.JSON.encode(records[0].raw);
var jsonObj = Ext.JSON.decode(jsonStr);
form.loadRecord(jsonObj);
}
}
});
Run Code Online (Sandbox Code Playgroud)
问题是我只希望在第一次加载商店时回拨.我想在之后删除它,以便当我重新加载或再次加载存储时,它不会再次调用此回调.
任何想法,我尝试在选项配置中获取回调但这似乎不起作用.
使用Extjs 4.2
我已经阅读了许多文档,谷歌,论坛试图了解组件如何加载以及放置它们的位置,如商店,模型等,但仍然困惑.
这是我试图开始工作的一个例子
应用说明
主菜单包含联系人,项目,人员等等,应用程序首先加载显示静态非数据驱动,然后使用点击联系人显示带有联系人列表的网格.然后,用户单击联系人行,并显示弹出编辑视图.
在contactitview中,联系人被加载到表单中,此外表单还有一个加载ContactTypes商店的组合框.ContactType应设置为该联系人记录的contacttype值.
这是一个常见的方法,考虑到这是一个大型应用程序,我只想在需要时加载数据,即显示视图.
以下是我的一些困惑
您可以在应用程序配置中定义所有控制器,商店,模型,视图,但无论您正在查看哪个页面,都会加载所有内容.此外,如果您的商店中有autoLoad:true,那么即使您没有查看该特定视图,也会对数据库进行所有商店的调用.
在控制器的stores或models属性中指定商店或模型时,具体到底是做什么的?它只是让你轻松引用商店而不是实际创建它或创建它,还是只是设置getter和setter函数以方便使用.例如,如果我在控制器的store属性中指定了一个商店,并且autoLoad为true,则加载所有数据而不需要执行任何其他操作.但我真正想要的是,只有当我点击"联系人"并且显示列表视图时才会加载该商店.所以我设置autoLoad:false并在我的列表函数中手动获取商店使用this.getStore('Contacts').这很好用,但是使用store和models控件的数组属性的目的是什么.我在调试器中看到,如果我不使用存储/模型属性,则会对这些js文件进行get请求.
对不起,我知道这很多,但对我来说很困惑,并且已经挣扎了一段时间.
最后,只有当您通过设置autoLoad:false并手动加载来单击"联系人"按钮时,才会加载"联系人"网格.现在,当用户单击编辑时,记录加载正常,但如何加载组合框然后选择正确的值.我认为我的部分问题是了解商店模型如何加载和实例化.在我的组合框存储属性中,我已将ContactType指定为存储,但我得到错误存储未定义,因此未加载js文件或未实例化存储.
到目前为止,这是我的代码.
应用代码
Ext.Loader.setConfig({
enabled: true,
paths: {
'Ext.ux': "lib/extux",
'Wakanda': "lib/extux/wakanda"
}
});
Ext.application({
name: 'SimplyFundraising',
autoCreateViewport: true,
requires: ['Ext.ux.Router', // Require the UX
'Wakanda.model'
],
controllers: ['Contacts'],
});
Run Code Online (Sandbox Code Playgroud)
联系控制器
Ext.define('SimplyFundraising.controller.Contacts', {
extend: 'Ext.app.Controller',
views: ['contacts.List', 'contacts.Edit'],
init: function() {
this.control({
'contactslist': {
itemdblclick: this.editContact,
removeitem: this.removeContact
},
'contactslist > toolbar > button[action=create]': {
click: this.onCreateContact
},
// 'contactsadd button[action=save]': {
// click: this.doCreateContact
// …Run Code Online (Sandbox Code Playgroud) 我有一个控制器,我想将一个简单的字符串值传递给下一个View.
为此,我正在创建这样的视图.
var nextView = Ext.create('MyApp.view.NextView', {
content: 'value'
});
Ext.Viewport.add(nextView);
Ext.Viewport.animateActiveItem(nextView, {
type: 'slide',
direction: 'left'
});
Run Code Online (Sandbox Code Playgroud)
在NextView上,我有一个标签,我想HTML将标签的属性设置为我从控制器传递的值.即.value.
我的NextView看起来像这样.
Ext.define('MyApp.view.NextView', {
extend: 'Ext.form.Panel',
config: {
content: 'null',
items: [{
xtype: 'label',
html: 'value'
}]
}
});
Run Code Online (Sandbox Code Playgroud)
我不知道如何从这里开始.我不能将NextView作为表单.我只需要在这种情况下传递一个字符串值.
实现这一目标的最佳方法是什么?