AngularJs ui-routing - 控制器的方法

时间:2015-11-11 18:34:49

标签: javascript angularjs

我有角度的ui-routing。 例如我有电影控制器,我有类别方法,当用户输入/电影/类别时,我想调用此方法

.state('movies', {
    url: '/movies',
    views: {
        'pageContent': {
            controller: 'movies',
            templateUrl: 'movies.html'
        }
    }
})

我怎样才能实现这样的目标:

.state('moviesCategories', {
    url: '/movies/categories',
    views: {
        'pageContent': {
            controller: 'movies',
            **method: 'categories',**
            templateUrl: 'categories.html'
        }
    }
})

3 个答案:

答案 0 :(得分:0)

如果要在路线更改时执行方法,可以将此代码插入categories.html

<div  data-ng-init="categories();"> ... </div>

答案 1 :(得分:0)

电影中的

控制器应该添加$ state.go(&#39; moviesCategories&#39;);此方法重定向到状态moviesCategories

文档中的样本

.state('state1', {
  url: "/state1",
  templateUrl: "partials/state1.html"
})
.state('state1.list', {
  url: "/list",
  templateUrl: "partials/state1.list.html",
  controller: function($scope) {
    $scope.items = ["A", "List", "Of", "Items"];
  }
})

答案 2 :(得分:0)

更好地为每条路线创建单独的控制器。让我们说'categoriesController'。

$routeProvider
    .when('/movie',{
         templeteUrl:'templates/movies',
         controller:'moviesController'
    )
    .when('/movies/categories',{
         templeteUrl:'templates/movieCategories',
         controller:'movieCategoryController',
         resolve:{
              categories://pull categories using a service here. inside service write $http call.        
         }
    );
控制器内的

//will inject the categories we got in reolve
angular.controller('movieCategoryController',['categories','$scope',functions(categories,$scope){

   $scope.categories=categories;
}]);