2

Onsen UI を発見しましたが、問題があります。

1- 2 つのページを定義page-1.htmlpage-2.html、コントローラーを接続しました (page1Ctrlおよびpage2Ctrl)。

2- page1Ctrl で page-2.html に移動する関数を定義しました。

$scope.ons.navigator.pushPage('page-2.html');

実行するpage2Ctrl

page-1.html3-このページには、 (で)に戻るコードを実行するボタンがありますpopPage()。この関数は に付属していpage2Ctrlます:

function page2Ctrl($scope) {
    $scope.functionToPopPage = function() {

        // >>> Here I would like to execute a function attached to page1Ctrl

        $scope.ons.navigator.popPage();
    };
}

4- 次に、 で定義された関数を起動したいのですがpage1Ctrlどのように処理できますか?

ありがとう

4

2 に答える 2

3

コントローラの機能をサービスと共有できます。アタッチしたい関数を page1Ctrl と page2Ctrl の両方に登録してみて、page2Ctrl から共有関数を呼び出します。次のコードは例です。

page1.html

<ons-page class="center" ng-controller="page1Ctrl">
  <ons-navigator-toolbar
    title="Welcome">        
  </ons-navigator-toolbar>
  <h1>Page 1</h1>
  <ons-button ng-click="goToPage2()">Push Page 2</ons-sbutton>  
</ons-page>

page2.html

<ons-page class="center" ng-controller="page2Ctrl">
  <ons-navigator-toolbar title="Page 2">        
  </ons-navigator-toolbar>
  <h1>Page 2</h1>
  <button class="topcoat-button" ng-click="popToPage1()">Pop Page1</button>
</ons-page>

app.js

var myApp = angular.module('myApp', ['onsen.directives']);


myApp.factory('pageService', function(){
    return{
        foo : function()
            alert('foo');
        }
    }        
});

myApp.controller('page1Ctrl', function($scope, pageService){    
    $scope.goToPage2 = function(){
        pageService.foo();
        $scope.ons.navigator.pushPage("page2.html");        
    }
});

myApp.controller('page2Ctrl', function($scope, pageService){    
    $scope.popToPage1 = function(){
        pageService.foo();
        $scope.ons.navigator.popPage();        
    }
});
于 2014-04-25T03:07:20.017 に答える