[英]AngularJS: Function inside directive is not returning data
這是我的指令
angular.module('categoryListingDirective', []).directive('categoryListing', function (Category) {
return {
restrict: 'A',
replace: true,
require: true,
scope: true,
templateUrl: '../static/partials/categoryListingForm.html',
link: function (scope, element, attrs) {
var categories = undefined;
var getCategories = function () {
if (categories === undefined) {
categories = Category.query(function(){});
}
return categories;
};
var allParentCategories = function () {
console.log('getting parent categories');
return _.uniq(getCategories(), function (category) {
console.log('category:', category);
return category.parent;
});
};
console.log('categories:', getCategories());
console.log('allParentCategories:', allParentCategories());
}
}
});
當我嘗試在瀏覽器上運行此命令時,在console
日志中看到以下內容
categories:
[$promise: Object, $resolved: false]
categoryListing.js:25
getting parent categories categoryListing.js:19
allParentCategories: []
我很確定這不應為空。
題
async
性質嗎? 謝謝
更新
Category
資源看起來像
angular.module('categoryService', ['ngResource']).factory('Category', function($resource) {
return $resource('categories/:categoryId', {categoryId: '@uuid'});
});
(由於答案確實在評論中,因此被標記為社區Wiki)
這可能會解決問題,並幫助您了解處理$resource
返回的promise的方式:
var allParentCategories = function () {
console.log('getting parent categories');
var ret = [];
getCategories.then(function(results){
ret = _.uniq(results.data, function (category) {
console.log('category:', category);
return category.parent;
});
});
return ret;
};
我知道,它不只是直接從_.uniq
返回結果_.uniq
, _.uniq
在JS當前狀態下生存!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.