var index = 1;// index的最外层初始值,亦是全局 var MyPage = React.createClass({ //构成工具栏组件,根据hasBackButton的值为backButton常量赋值,有则渲染出按钮组件,没有则为空。 // 注意:返回按钮的onclick绑定了handleClick的方法,为了弹出提示和移除页面 renderToolbar: function(route, navigator) { const backButton = route.hasBackButton ?Back: null; //返回包含上面定义好的backButton内容以及标题的Toolbar组件 return ({backButton}{route.title}); }, // 单击处理事件:在方法被调用时弹出notification的confirm框并根据response值决定是否剔出navigator的数组的最大值 // 这里的response不知道是什么意思,是变化幅度吗? //通过打印发现,此处的response是confirm框的确认操作和取消操作,确认是1,取消是0,但是是怎么实现的呢? // 通过这里打印的navigator对象发现里面重要的数组:pages,routes,routesBeforePop // 从后两者的比较中可以看出多页面是如何实现backup的历史记忆的,他们只是一个记忆数组,按跳转顺序记录页面对象 // 而pages数组则pushPage保存的是已创建的所有页面信息 handleClick: function(navigator) { ons.notification.confirm('Do you really want to go back?') .then((response) => { console.log("response:" + response); console.log(navigator); if (response === 1) { console.log(navigator); navigator.popPage(); console.log(navigator); setTimeout("console.log(navigator)",3000); } }); }, // 为navigator数组存入页面、同时赋值title为第几个另一个页面、为hasBackButton赋值true,因为是第n层页面了所以理应具备按钮 pushPage: function(navigator) { navigator.pushPage({ title: `This is new page ${index}`, hasBackButton: true }); // 每调用一次pushPage方法,title索引值就增加1 index++; }, // 使用Page组件构成页面,属性有title以及渲染好的工具栏 renderPage: function(route, navigator) { return (// section是什么,ons的组件?// 使得按钮具有生成页面的功能,调用pushPage Push Page); }, // 正式渲染显示Navigator组件,属性主要是引入写好的的renderPage,initialRoute是设定首页的title和是否有按钮的常量的默认值 render: function() { return (); } }); ons.ready(function() { ReactDOM.render(, document.getElementById('app')); });