0

我在我的应用程序中使用 $state.go() 其他地方,但它不能在一个简单的函数中工作,我不知道为什么。它没有显示错误或显示 $state.go() 中调用的正确状态。

我已经使用 $stateChangeStart、$stateChangeError、$viewContentLoading 和 $stateChangeSuccess 对其进行了测试。它到达了所有正确的阶段:$stateChangeStart、$viewContentLoading 然后是 $stateChangeSuccess,每个阶段都有正确的内容,但不会加载页面。

我最初用 ui-sref 尝试过,但没有用,所以我用 $state.go() 尝试过,现在它不起作用,我真的很困惑。我看不出这段代码和我在 $state.go() 工作的其他地方有什么区别。

HTML 链接:

<li ng-repeat="thing in things" class="item" ng-click="showThingDetails()">

控制器中的代码:

$scope.showThingDetails = function () {
$state.go('thingDetails');}

状态代码:

.state('thingDetails', {
url: '/thingDetails',
views: {
  'menuContent': {
    templateUrl: 'templates/thingDetails.html',
    controller: 'thingDetails'
  }
}
})

thingDetails.html

<ion-view view-title="Thing Details">
  <ion-content>
    <h1>{{title}}</h1>
  </ion-content>
</ion-view>

thingDetails.js

angular.module('controllers')
  .controller('thingDetails', function($scope, $stateParams) {
    $scope.title = "thing";
});
4

2 回答 2

0

我刚刚找到了自己问题的答案。我从我的应用程序的另一个地方复制了状态,并在视图对象中定义了 templateUrl 和控制器导致它播放。我从视图对象中取出了 templateUrl 和控制器,它起作用了。

状态代码现在如下所示并且可以工作:

.state('sweepstakeDetails', {
  url: '/sweepstakeDetails',
  templateUrl: 'templates/sweepstakeDetails.html',
  controller: 'sweepstakeDetails'
})

如果有人可以添加更详细的答案,那么我将不胜感激。

于 2017-11-03T13:28:23.017 回答
0

您是否有一个名为“menuContent”的ui-view,应该在其中加载视图?

否则,您可以尝试在没有 menuContent 视图的情况下使用此状态

.state('thingDetails', {
    url: '/thingDetails',
    templateUrl: 'templates/thingDetails.html',
    controller: 'thingDetails'  
})
于 2017-11-03T13:32:20.907 回答