Onsen ui 通过<;弹出页面后未加载父控制器模块;ons后退按钮>;从推送的页面

Onsen ui 通过<;弹出页面后未加载父控制器模块;ons后退按钮>;从推送的页面,onsen-ui,Onsen Ui,这是我的第一个问题,所以我害怕成为一个愚蠢的人,但我以前做过很多研究,花了很多时间试图通过修改代码来解决这个问题。我对网络应用程序编程比较陌生,可能缺少一些概念性的知识,这些知识可能会阻碍我前进 环境和工具:使用cordova、onsen ui、Android studio、angularjs在我的专业领域开发一种工程师计算器,我不是一名专业程序员 该应用程序基于一系列页面连接,如下面的用户数据/页面流所示,除我请求帮助的问题外,该应用程序运行良好 (我还不能发布图片) 它是这样的数据流: me

这是我的第一个问题,所以我害怕成为一个愚蠢的人,但我以前做过很多研究,花了很多时间试图通过修改代码来解决这个问题。我对网络应用程序编程比较陌生,可能缺少一些概念性的知识,这些知识可能会阻碍我前进

环境和工具:使用cordova、onsen ui、Android studio、angularjs在我的专业领域开发一种工程师计算器,我不是一名专业程序员

该应用程序基于一系列页面连接,如下面的用户数据/页面流所示,除我请求帮助的问题外,该应用程序运行良好

(我还不能发布图片)

它是这样的数据流:

menu.html>>page1.html>>load.html

对于每个html页面视图,我都有一个控制器模块,所有模块都在同一个控制器文件中。例如,index.html中定义的滑动菜单调用page1.html,这是唯一一个通过onclick Push页面链接到load.html页面的SVG图形页面。请参见以下页面代码:

menu.html

<body onload="onLoad()" ng-app="calcfcc" ng-controller="calcfccController">

<!-- to transfer to AS start here -->

<ons-sliding-menu
        menu-page="menu.html" main-page="page1.html" side="left"
        var="menu" type="reveal" max-slide-distance="200px" swipable="true">
</ons-sliding-menu>

<!-- sliding-menu - Menu list here!!! -->

<ons-template id="menu.html">
    <ons-page modifier="menu-page">
        <ons-toolbar modifier="transparent"></ons-toolbar>

        <ons-list class="menu-list">

            <ons-list-item class="menu-item" ng-click="menu.setMainPage('page1.html', {closeMenu: true})">
                <ons-icon icon="fa-home"></ons-icon>
                {{menu1}}
            </ons-list-item>

{{menu1}}
从幻灯片菜单调用page1.html:

<ons-navigator animation="slide" var="page1navi">
<ons-page ng-controller="initController" on-device-backbutton="backbuttonpage()" style="background: #001a00;">




    <ons-toolbar fixed-style>
        <div class="left">
            <ons-toolbar-button id="popoverb1" ng-click="menu.toggle()">
                <ons-icon icon="ion-navicon" size="28px" fixed-width="false"></ons-icon>
            </ons-toolbar-button>
        </div>
        <div class="center">
            {{pageheader1}}
        </div>
        <div class="right" style="padding: 7px;">
                <img src="img/AASis78x31branco.png" alt="AASis" >
        </div>
    </ons-toolbar>

{{pageheader1}}
page1.html部分,从可单击的SVG图标调用load.html:

<g
                id="g4533"
                onclick="page1navi.pushPage('load.html', { animation : 'slide' } )"
                transform="translate(0,-66.958368)">
            <rect
                    style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4485);fill-opacity:1;fill-rule:evenodd;stroke:#6e6e6e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
                    id="rect10449"
                    width="60"
                    height="60"
                    x="275.33713"
                    y="786.85248"
                    rx="6.7857499"
                    ry="6.3835001" />

load.html页面:

<ons-page ng-controller="loadController">
<ons-toolbar>
    <div class="left"><ons-back-button>{{about1}}</ons-back-button></div>
</ons-toolbar>



<p class="textarea" style="font-size: 20px; border: 2px solid #0066FF; margin: 5px">
    {{load1}}
</p>

{{about1}}

{{load1}}

因此,我的问题是page1.html控制器加载良好,load.html控制器也加载良好,并使其正常工作,但当按load.html页面“后退”按钮返回page1.html时,page1控制器未加载,我无法使用在load.html上操作的数据刷新视图

这与全局变量无关,只是没有加载正确的控制器

当从index.html调用page1.html时,它可以工作,但我可以要求用户返回侧菜单进行刷新。另外,全部重新加载不是一个选项,对用户来说非常烦人

你知道怎么解决这个问题吗


TKS高级版

创建页面时,控制器仅运行一次。当您使用“后退”按钮时,您正在销毁
load.html
并移回
page1.html
,但此按钮已在页面堆栈中创建,因此不会再次调用其控制器。此外,AngularJS只会识别在Angular范围内进行的更改。否则,您将需要使用来让Angular了解更改。您可以在Onsen UI上使用
$scope.$apply()

在任何情况下,如果您使用AngularJS,我认为您应该使用
ng单击
,而不是
onclick
。此外,您还可以将文本区域绑定到范围变量,这样您在视图中所做的每个更改都将自动存储。我认为这两个变化应该足够了


希望有帮助

您很好地解释了控制器的生命周期,最终我了解了动态,但是我将onclick更改为ng click,这是有意义的,并且还为第1页上的文本区域创建了一个ng模型,我想更新,但与load.html关联的控制器,这是当前加载的,请不要更新它。由于我不知道如何编写代码来捕获事件,我尝试将$scope.$apply()放入控制器的JS函数中,但它会生成错误,无法工作。现在尝试更多的研究…只是一个提示,这个问题是由弗兰·迪奥斯本人在onsenui页面上直接回答的,问题解决了。他发送了另一个stackoverflow讨论的链接,指出了解决方案。