0

美好的一天,我正在尝试解决 Angular 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>

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

4

1 回答 1

1

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

类别方法应该写成

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

然后你会在你的控制器中获得类别依赖。

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

无论如何最好回报诺言

于 2013-10-01T17:34:03.827 回答