改造 ztree 以便于兼容 Angular ui-router 的 ui-sref 功能

// 一、添加 ui-sref 属性
//default setting of core
_setting = {
		treeId: "",
		treeObj: null,
		view: {
			...
		},
		data: {
			key: {
				children: "children",
				name: "name",
				title: "",
				url: "url",
				uiSref:"ui-sref"
			}
		}
}

// 二、添加取 ui-sref 值, 方法
//method of operate data
data = {
	getUiSelf:function(setting, node){
		var t = setting.data.key.uiSref === "" ? setting.data.key.uiSref : setting.data.key.uiSref;
		return "" + node[t];
	},
}
// 在 data 里面添加获取 ui-sref 属性的值方法。

// 三、修改生成 <a/> 标签属性方法。
//method of operate ztree dom
view = {
	makeDOMNodeNameBefore: function(html, setting, node) {
		var title = data.getNodeTitle(setting, node),
		url = view.makeNodeUrl(setting, node),
		fontcss = view.makeNodeFontCss(setting, node),
		fontStyle = [];
		for (var f in fontcss) {
			fontStyle.push(f, ":", fontcss[f], ";");
		}
		//  begin ui-sref 
		var ui_sref = data.getUiSelf(setting,node);
		if(""!=ui_sref && undefined!=ui_sref && null!=ui_sref && "undefined"!=ui_sref){
			// 如果要使用 angular-ui-router 的 ui-sref 功能,则必须把 onclick 事件 和 href 删除。
			html.push("<a id='", node.tId, consts.id.A,"' ui-sref='",ui_sref, "' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A, "' style='", fontStyle.join(''),"'");
		} else {
			html.push("<a id='", node.tId, consts.id.A,"' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A," οnclick=\"", (node.click || ''),
				"\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''),
				"'");
		}
		//  end  ui-sref 

		if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"'").replace(/</g,'<').replace(/>/g,'>'),"'");}
		html.push(">");
	},
}

// 四、初始化 ztree 
 $j().ready(function(){
	var setting = {	};
	var zNodes =[
		{ name:"主菜单", open:true,
			children: [
				{ name:"菜单1", open:true,
					children: [
						{ name:"用户","ui-sref":"user"},
						{ name:"权限","ui-sref":"permission"},
						{ name:"菜单","ui-sref":"menu"},
						{ name:"其它","ui-sref":"other"}
					]},
				{ name:"菜单2",
					children: [
						{ name:"用户"},
						{ name:"权限"},
						{ name:"菜单"},
						{ name:"其它"}
					]},
				{ name:"菜单3", isParent:true}
			]}        
	];
	$j.fn.zTree.init($j("#treeDemo"), setting, zNodes);
 });


 // 五、html 代码。
<div>
	<a id="treeDemo" ui-sref="home"  class="ztree"></a>
</div>

// 六、angular js 代码。
  myApp.config(['$stateProvider', '$urlRouterProvider',
        function ($stateProvider, $urlRouterProvider) {
            console.log(web_root);
            $stateProvider
                .state('user', {
                    url: '/user',
                    templateUrl: web_root+'/views/user.html'
                }).state('permission', {
                    url: '/permission',
                    templateUrl:  web_root+'/views/permission.html'
                }).state('menu', {
                    url: '/menu',
                    //template: '<h1>Hello {{ name }}</h1>'
                    templateUrl:  web_root+'/views/menu.html'
                }).state('other', {
                    url: '/other',
                    templateUrl:  web_root+'/views/other.html'
                });
            $urlRouterProvider.otherwise("user");
        }
    ]);




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值