在angularjs中路由加载之前解析对象列表

时间:2013-10-01 15:25:28

标签: javascript angularjs angularjs-scope

美好的一天 我正在尝试解决角度js项目中的属性。以下是我到目前为止所做的,

    .when('/wizard',{
    controller:'WizardController',
    templateUrl: 'partials/wizard.html',
    access: access.user,
    resolve: {
        categories: function ($http) {
                var cats=  ;
                var promise = $http({
                  method: 'GET',
                  url: '/categories',
                });
                promise.success(function(data){

                    console.log('Data successfully retrieved');

                    cats = data;
                });

                promise.error(function(){
                    console.log('Couldn\'t fetch categories' )
                });

                //categories =  
                //      [{"id":"1","category_name":"Testing"},
                //      {"id":"2","category_name":"Testing 2"},
                //      {"id":"3","category_name":"Testing 3"},
                //      {"id":"4","category_name":"Testing 4"}];
                return cats;



            }
        }

    })

我正在尝试访问我视图中的类别 我已经将$ scope.categories设置为等于已解决的注入类别

    <div class="pure-u-1-3">
                <label for="category">Project Category</label>
                  <select ng-model="project.category" ng-options="k as v for (k,v) in categories">
                  <option value="">-- Choose Category --</option>
                </select>
            </div>

我似乎无法弄清楚我做错了什么!

1 个答案:

答案 0 :(得分:1)

resolve对象的categories属性应返回一个promise,当你返回一个数组时,将来会重新分配。

类别方法应该写成

resolve {
   categories:function($http) {
     return $http({method: 'GET',url: '/categories'});
   }
}

然后您将在控制器中获得类别依赖项。

如果你看一下你的逻辑,它会在http回调完成后重新引用cats,而返回的引用是另一个对象。

无论如何最好还许承诺