研究doraCMS中遇到的知识点

最近在看doraCMS,许多地方不清楚就百度了,在这里总结一下

一、mongodb和redis的安装【win7,64位】

mongodb:

官网下载,安装完成后,在命令行下找到mongodb安装目录下的bin目录,运行

mongod.exe --dbpath c:\data\db

ps:每次这样启动都超级麻烦,于是还是把他弄成windows服务吧

mongod.exe --bind_ip yourIPadress --logpath "C:\data\dbConf\mongodb.log" --logappend --dbpath "C:\data\db" --port yourPortNumber --serviceName "YourServiceName" --serviceDisplayName "YourServiceName" --install

必须要以管理员身份运行cmd,我没有log文件,所以直接新建了一个,其中service内容就是服务中第一列显示的名称。然后就搞定了。

其中c盘的data文件是数据存放目录

要进入后台管理shell就运行bin目录下的mongo.exe

创建数据库

use db_name;

show dbs;

show collections;

db.collection_name.find();

redis:

github上有提供下载,然后打开64bit的目录,找到redis-server.exe就可以了,简单方便

二、知识点

1、arry.slice(begin,end)方法,将数组中的一部分浅复制到一个新的数组中,并返回这个新的数组

2、a.indexOf(b)返回的是指定字符串b在字符a中首次出现的位置,首位为0

3、populate(),mongodb的方法,类似join结果

4、ng-disabled,angular的button标签中的属性,当满足条件时,按钮不可用,可用于“表单中属性没有填则提交按钮不可用”

5、removeClass(),从被选的元素中移除一个或多个类,可用于“去除hidden隐藏选项”

6、vaid,angular的一个属性,参考 详细解读AngularJS中的表单验证编程 

7、res.locals.xxx,设置整站的全局变量,可将session中的信息放进去,res.locals.a=res.session.a;

 三、ztree 

【有时间再写

ztree awsome样式中,自定义的button的显示和隐藏在setting中的view属性中,如下这样就可以隐藏添加的按钮

removeHoverDom: removeHoverDom

function removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
$("#editBtn_"+treeNode.tId).unbind().remove();
$("#delBtn_"+treeNode.tId).unbind().remove();

};

ng-minlength=""用来设置input的最短字符长度,但是突然不显示提示信息,改了下form的名称,把myForm改成myForm_add就解决了,应该是form多了之后名字有冲突

 

bootstrap typeahead【因为业务需求需要在输入时完成自动补全,jQuery叫autocomplete,bootstrap有typeahead】

页面正常输入

<input type="text" class="form-control" id="add_user" name="add_user" ng-model="add_user" />

js文件中添加如下代码

$('#add_user').typeahead({
source:get_user()

});

$('.tt-query').css('background-color','#fff');

function get_user(){
var user_list=[''];
$.ajax({
url: "/userlist",
method: "GET",
async: false,
success: function (result) {
if (result) {
for(var i=0;i<result.length;i++){
user_list.push(result[i].userName);
}
} else {
console.log("未知异常,请稍后重试");
}
}
})
return user_list;

}

当然还要引入typeahead的相关js文件

 

ztree expand【这个是导入数据之后节点太多了,ztree一次性全部加载会有点慢,于是想着弄成动态加载,开始只加载第一层父节点,每次点击父节点时,再加载它的子节点】

但是这个的实现有点复杂,只加载第一层父节点的话,图标显示是子节点,于是只好在数据库中添加isParent属性,这样第一层就ok了,至少显示没问题

接下来就用到ztree callback里的onExpand方法,当展开该节点treeNode时,去后台取它的子节点,然后添加到树中

var childTree = changeToTreeJson(result);
zTree.addNodes(treeNode, childTree, false);

这样子节点就显示了,但还要注意一个问题,因为每次展开都会取子节点然后添加节点,会导致重复添加

我之前百度也看到有人在折叠或者展开之前将子节点清空,试了下效果不好,然后发现只要在取节点之前加一个条件就可以了

if(!treeNode.children) {

取节点

}

搞定。

然而并没有,因为加上isParent这个属性之后,当删除父节点时遇到问题,当它的子节点都删完后,因为它的isParent属性还是true,所以它的图标还是父节点的图标,删不掉。

解决方法就是在删除子节点的时候,先得到下面的数

zTree.getNodeByParam("id",treeNode.parentId).children.length

有点绕,其实就是该节点的父节点的孩纸数目

如果这个数目是1,那么当你删除该节点之后,就要把它的父节点isParent属性设置为false。

这样的解决方法有点绕,但是暂时没想出其他的办法,有想过不加isParent属性,但是这样第一层显示时又要麻烦,所以麻烦总是避免不了的。

 

ztree onRightClick【弄完onExpand才发现把右键忘记了】

这个也是ztree callback里面的

$("#rMenu ul").show();

rMenu.css({"top": event.clientY + "px", "left": event.clientX + "px", "visibility": "visible"});

$("body").bind("mousedown", onBodyMouseDown);

 

function onBodyMouseDown(event){
if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
rMenu.css({"visibility" : "hidden"});
}
}

 

 function hideRMenu() {
if (rMenu) rMenu.css({"visibility": "hidden"});
$("body").unbind("mousedown", onBodyMouseDown);
}

 

 

 其实很简单,只是配合上业务需求有点难度,不要忘记其他时候hideRMenu就可以。

 

关于ztree还有一点,其实主要就是弄了棵树,所以算是研究了遍ztree

zTree.selectNode(nodes[0]);

selectNode,关键是显示选择哪个节点,默认可以是第一个,当页面跳转后,也可以通过这个使其选择跳转前选的那个节点,免得右边页面换了,左边的树不知道选谁。

 

四、ueditor

这个看似拿过来就可以用,然而问题还蛮多。。。

之前用Angular,ueditor中用到数据绑定的时候,后台取出了数据,但编辑器中不显示内容,而且是我的机器正常,别人的机器不显示

试着在ueditor指令配置的时候,加了一句

ue.setContent(ngModel.$modelValue);

就可以显示了。。。。。

转载于:https://www.cnblogs.com/lww930/p/5283553.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值