gpt4 book ai didi

javascript - AngularJS:指令内的函数不返回数据

转载 作者:行者123 更新时间:2023-11-28 19:49:47 24 4
gpt4 key购买 nike

这是我的指令

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());
}
}
});

当我尝试在浏览器上运行此程序时,我在控制台日志中看到以下内容

categories: 
[$promise: Object, $resolved: false]
categoryListing.js:25
getting parent categories categoryListing.js:19
allParentCategories: []

我很确定这不应该为空。

问题

  • 是因为调用的异步性质导致被触发吗?
  • 我该如何解决这个问题,有哪些建议?

谢谢

更新

Category 资源看起来像

angular.module('categoryService', ['ngResource']).factory('Category', function($resource) {
return $resource('categories/:categoryId', {categoryId: '@uuid'});
});

最佳答案

(标记为社区维基,因为答案确实在评论中)

这可能会起作用并帮助您理解处理 $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 返回结果漂亮,但这就是 JS 当前状态的生活!

关于javascript - AngularJS:指令内的函数不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23693297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com