nw.js node-webkit系列(7)Native UI API Menu的使用

本节主要介绍Native UI API 中菜单栏的使用,菜单栏分为两类:一类是普通菜单栏,另一类是上下文菜单栏(右键弹出)。

(一)例子

<span style="font-size:14px;"><!DOCTYPE html>
<html>
	<head>
		<title>menuDemo</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
	<body>
		<h1>menu api 测试</h1>
		<script>
			 // Load native UI library
			var gui = require('nw.gui');
			var win = gui.Window.get();
			 //创建window menu
			var windowMenu = new gui.Menu({
				type: 'menubar'
			});
			var windowSubmenu = new gui.Menu();
			var subMenuItem = new gui.MenuItem({
				label: '子菜单项'
			});
			windowSubmenu.append(subMenuItem);
			windowMenu.append(
				new gui.MenuItem({
					label: '子菜单',
					submenu: windowSubmenu
				})
			);
			win.menu = windowMenu;
			 // Create an empty menu
			var menu = new gui.Menu();
			 // Add some items
			menu.append(new gui.MenuItem({
				label: 'Item A'
			}));
			menu.append(new gui.MenuItem({
				label: 'Item B'
			}));
			menu.append(new gui.MenuItem({
				type: 'separator'
			}));
			menu.append(new gui.MenuItem({
				label: 'Item C'
			}));
			document.body.addEventListener('contextmenu', function(ev) {
				ev.preventDefault();
				menu.popup(10, 10);
				return false;
			});
		</script>
	</body>
</html></span>

(二)函数参考

new Menu([option])
创建一个菜单。如果你不添加参数,将作为一个普通的菜单按钮创建,如果要想作为窗口菜单创建,则需要添加参入如下:
new Menu({
<span style="white-space:pre">	</span>type: 'menubar'
});

Menu.items
获取该Menu下所有的MenuItem对象,返回结果为数组。例子如下:
for (var i = 0; i < menu.items.length; ++i) {
    var element = document.createElement('div');
    element.appendChild(document.createTextNode(menu.items[i].label));
    document.body.appendChild(element);
}

Menu.append(MenuItem item)
向当前菜单中添加一个menuitem对象,该对象在整个menuitem集合的尾部。

Menu.insert(MenuItem item, int i)
在menuitem集合的指定位置插入一个menuitem对象。

Menu.remove(MenuItem item)
从menuitem集合中移除一个menuitem对象。

Menu.removeAt(int i)
删除menuitem集合中指定索引位置的menuitem对象。

Menu.popup(int x, int y)
在当前窗口的指定位置弹窗菜单。例子如下:
document.body.addEventListener('contextmenu', function(ev) { 
  ev.preventDefault();
  menu.popup(ev.x, ev.y);
  return false;
});

MenuItem.click
获取或设置一个MenuItem的点击操作
menu.append(menuitem);
menuitem.click = function() { 
    console.log('clicked');
};
console.log(menu.items[0].click);

(三)创建上下文菜单

创建上下文菜单,需要在页面监听contextmenu 事件,然后控制弹出菜单。
document.body.addEventListener('contextmenu', function (ev) {
    ev.preventDefault();
    menu.popup(10, 10);
    return false;
});
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue.js使用Node.jsAPI需要注意一些事项。由于Vue.js是在浏览器环境中运行的,而Node.jsAPI主要针对服务器端开发,所以直接在Vue.js使用Node.jsAPI是不可行的。 如果你想在Vue.js中调用Node.jsAPI,一种常见的做法是通过后端服务器来实现。你可以在后端服务器中编写相应的接口,供Vue.js前端调用。以下是一个简单的示例: 1. 在后端服务器中,使用Node.js的Express框架创建一个API接口: ```javascript const express = require('express'); const app = express(); app.get('/api/data', (req, res) => { // 在这里可以调用Node.jsAPI进行一些操作 // 返回需要的数据给前端 res.json({ message: 'Hello from Node.js API!' }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. 在Vue.js使用Axios或Fetch等HTTP库来调用后端服务器的API: ```javascript import axios from 'axios'; axios.get('/api/data') .then(response => { console.log(response.data.message); // 输出:Hello from Node.js API! }) .catch(error => { console.error(error); }); ``` 这样,当你在Vue.js中调用`axios.get('/api/data')`时,实际上是向后端服务器发送了一个HTTP请求,后端服务器再通过Node.jsAPI进行相应的操作,并将结果返回给Vue.js前端。 需要注意的是,你需要在后端服务器中安装和配置Node.js的相关模块和环境,并确保后端服务器正常运行。同时,你也可以根据具体需求,设计更复杂的API接口来满足前端的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值