我发现了Onsen UI,我遇到了一个问题:
1-我定义了2页page-1.html
和page-2.html
并附加了控制器(page1Ctrl
和page2Ctrl
)。
2-我在page1Ctrl中定义了一个函数,转到第2.html页:
$scope.ons.navigator.pushPage('page-2.html');
执行page2Ctrl
3-在此页面中,我有一个按钮,用于执行在page-1.html
(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
中定义的函数,我该如何处理?
由于
答案 0 :(得分: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();
}
});
答案 1 :(得分:0)
想法:
前:
var heloWord;
function page1Ctrl($scope) {
heloWord = function() {
console.log('Helo Word');
}
}
function page2Ctrl($scope) {
$scope.functionToPopPage = function() {
heloWord();
$scope.ons.navigator.popPage();
};
}