码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-12 17:43:27      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

// 一、添加 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," onclick=\"", (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");
        }
    ]);



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

标签:

原文地址:http://blog.csdn.net/cjc921/article/details/42644081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!