jquery easyui的应用-2
有两个版本: freeware edition, commercial edition
easyui的 datagrid 实际上是一个table, 其数据来源 通过 url属性来从后台的php页面 获得.
easyui的 类名 都是这样构成的, easyui- 的前缀, 加上 插件的名称比如 dialog, datagrid, 因此对应的类样式名就是: class="easyui-dialog" class="easyui-datagrid"
======================================================
在jquery中, 通常标识符 是字符序列: 字母和数字, 比如choices, 但是如果在字符序列中出现了 “非字符序列” , 比如 “? - _ "等,则要将这个字符序列用 引号括起来。 比如: .css({color: 'red', "background-color": '#eee'});
又比如: ajax的post传输的数据, 是一个js对象, 属性名称通常是不需要加引号的, 但是对于js的数组 (js的数组是在标识符的最后加中括号[]), 这时候就要加引号: $.post('foo.php', {name: var_name, 'choices[]': var_choices}, function(){});
= 要注意 post实际返回的数据类型, 并不是什么都写成 json的,如果 远程php文件返回的是文本或html, 不是json格式的字符串, 那么就不能写成类型为 json, 否则不会返回任何东西的。 只有确实是json格式的 才能写成json。
ajax的post传输的数据: data: {'choices[]': [true,123, 'abc']}
后台接受到的 ajax传输的数组, 总是认为是字符串, 比如这里的true,123, 都被认为是字符串
post returned is: "
array (size=2)
0 => string 'true' (length=4)
1 => string 'abc' (length=3)
注意ajax回调函数中的 status是 字符串, 不是数字, 比如‘success, error’等
========================
声明html的类型, 如果使用的是html5的话, 写法是: <!DOCTYPE html>
注意是html, 不是html5, 就是说文档类型还是html,只是标准是html5的。
- easyui新的版本中, 允许在 标签div, a等中用
data-options="iconCls: 'icon-save'"
来定义, 这个在以前的话, 只能在js中 用 属性js对象做参数来指定的。
而且, 在js方法中指定的 属性 要比 data-options中指定的属性的优先级要高, 会覆盖data-options指定的属性。
<script>
$(function(){
$('#user-info').dialog({
iconCls: 'icon-search', // 这里的iconCls会覆盖前面的data-options
});
});
</script>
基本上所有的ui的操作方法都是 相通的, 使用方法都是类似的, 可以用 class来指定, 也可以用js方法来指定, 区别是: 不同的ui提供的 “内置” 事件 有的多 , 有的少, 事件越多 应该是越好的!!
为什么在js中最好要给变量以初始值?
js的类型有 number, string, boolean, function, object , undefined 六种类型, 但是如果你不给 变量 以初始值的话, 则默认的类型是 undefined, 那么这时, 对 undefined 的变量进行 算数运算, 就会 报错: “not a number NaN ”的出错提示
事实上, 对js、 php这样的 弱类型语言, 其变量类型 并不是 不 要求, 相反 反而是 时时处处 都存在 这个 类型的问题。 如果不注意, 就会引起各种各样的问题。
他们是通过 对 变量 所 赋的 值 , 来 自动判断 变量的类型的 所以 , 最好给 变量 在 使用前 赋给 一个初值, 这个既安全, 同时, 又是一个良好的 编程习惯! 比如: js中 var i = 0; var res="";
明确给出初值来 确定其类型和 内存的分配。
- 特别要注意, 在定义 定时器的时候, 这个定时器 会 一直执行 , 好像要等到定时器执行完成后, 才会执行 定时器语句 的后一条 语句. 所以, 要根据 某些条件来 终止 定时器的话, 应该 在 定时器的回调函数内 , 来删除 这个定时器. 而不是在外部来 删除这个定时器
<script>
var tm;
var i=0;
tm = window.setInterval(function(){
i++;
alert(i);
// 要这样在内部删, 才能删除定时器
if(i==5) {
window.clearInterval(tm);
}
}, 3000);
// 这样做是删除不了的
if(i==5) {
window.clearInterval(tm);
}
</script>
-
setTimeout只执行一次, 而 setInterval 和 clearInterval是重复执行, 它们都是 全局函数, 都是 window 对象的方法, 所以 window 都可以 省略. interval 是两个单词的组成, 是 : inter + val 的意思,
-
js的事件 是指一直处于监控中, 当事件发生时 才调用 该回调 函数的. 所以 它是 on... 的写法, 表示 "当 ...的时候" 相当于 一个 "伺服" "监视/等待"的机制, 所以执行的是 "回调函数"
而 方法是 马上就要 明确执行的, 是立马就要执行的,
easyui 的 所有的方法 都是 用 该 "插件名称" 来调用的, 比如 disalbe方法, 就是 :$('drp'). droppable('disable');
注意 方法名称 参数 要用 字符串 ,加 引号.
-
注意区分 draggable 和 droppable:
-
draggable是 指某个 div是可以拖动的(可移动到div区域), 是这个div 所在的矩形框 可以拖动, 实际上是把这个 div的css设置成 position:absolute了... 事实上, 它本身并没有 title 这样的属性, 但是你可以模拟这样的title区域: 在 具有 easyui-draggable 样式的 div中, 包含一个 id="title" 的div, 然后设置 easyui-draggable的div的 data-options="handle: '#title'" 这样的属性即可.
-
而 droppable 是指可以接收其他元素 放进来的 容器 元素?
========================================
接fetchSql?
-
fetchSql 连贯操作, 是用于获取sql语句, 而不是让数据表操作真正执行. 可以用于 任何的 curd操作,比如:
$user = M('user'); $user-> fetchSql(true)-> find(1);
输出 返回的 sql语句字符串就是: select * from think_user where id=1 -
cache缓存, 可以单独使用, 也可以作为连贯用法使用, 使用 缓存的好处是, 在 缓存有效期之内, 不会再次进行 数据库的查询操作, 而是直接 获取 缓存中 存取的数据.
-
distinct(true/false) 也是 连贯操作
$user ->distinct(true) -> select();
, 制定是否进行 "唯一性 过滤" 操作. 相当于在 select的语句中加上 distinct的关键字. -
定义一个字段的时候, 要指定 三个部分: 字段名 字段类型 [字段约束] 关于字段约束就是 对这个字段的额外 补充和说明等, 比如 : primary key, auto_increment, not null, default默认值等等.