我尝试使用options.onTransitionEnd上的pushPage(),因为我想在被推送页面的控制器内调用$scope.init()函数。

我看到我只能将匿名函数传递给onTransitionEnd选项。

例如:

app.navi.pushPage('page.html', {onTransitionEnd: function(){ alert('ok') }  } );


相反,有一种方法可以在已推送页面的控制器内调用$scope函数?

Tks很多。大卫

最佳答案

只要按钮在NavigatorController范围内,就可以通过这种方式传递函数:

<ons-button ng-click="myNav.pushPage('page1.html', {onTransitionEnd: myFunction})">Push</ons-button>

ons.bootstrap()
.controller('NavigatorController', function($scope) {
  $scope.myFunction = function () {
    console.log('onTransitionEnd');
  };
});


在这里检查:http://codepen.io/frankdiox/pen/Gpzvqw

无论如何,如果您想要初始化被推送的页面,也许使用页面事件会更容易(Onsen UI 1.x仅使用pageinit):http://onsen.io/guide/overview.html#Pagelifecycle

当然,被推送页面的控制器也将运行。

09-27 01:02