AngularJS。用不同的数据初始化控制器

时间:2014-07-18 10:20:45

标签: javascript ajax angularjs

我在我的Angular应用中使用$routeProvider进行路由。对于2条路线,我使用相同的HTML模板和相同的控制器。

        when('/products, {
            templateUrl: 'views/products.html',
            controller: 'ProductListCtrl'
        }).
        when('/myProducts', {
            templateUrl: 'views/products.html',
            controller: 'ProductListCtrl'
        }).

我想要显示的数据只有差异。即for path products我想要myserver:8080/products的AJAX请求和路径myProducts我要将数据从AJAX请求加载到myserver:8080/products/my

目前,我正在使用$location服务来区分当前页面(productsmyProducts)并加载适当的数据。

有更优雅的方式吗?例如,使用resolve的{​​{1}}方法?

2 个答案:

答案 0 :(得分:2)

在今天的场景中重用控制器名称的最佳方法是使用$ routeparams的解析。

您可以修改以下代码

 when('/products, {
                templateUrl: 'views/products.html',
                controller: 'ProductListCtrl',
    resolve: {
            product: function($http) {
              return $http.get('/products')
            },
              needToShowFilter:function($q){
               var showfilter = $q.defer();
                   showfilter.resolve(false);
               return showfilter.promise
            }
          }
            }).
            when('/myProducts', {
                templateUrl: 'views/products.html',
                controller: 'ProductListCtrl',
    resolve: {
            product: function($http) {
              return $http.get('/products/my')
            },
            needToShowFilter:function($q){
               var showfilter = $q.defer();
                   showfilter.resolve(true);
               return showfilter.promise
            }
          }
            }).

然后在您的控制器中,您可以将产品注入控制器代码。

答案 1 :(得分:0)

尝试在控制器中添加$ route,并记录

$route.current

看看你的内心,我认为这是获取信息的方式