gpt4 book ai didi

angularjs - Angular 自定义过滤器不显示

转载 作者:行者123 更新时间:2023-12-03 08:14:03 25 4
gpt4 key购买 nike

最后一天我一直在处理这个问题,试图找出我做错了什么。我正在尝试将一个值传递到过滤器中,并从从工厂返回构建的哈希中返回一个字符串。我可以让它在不调用工厂的类似函数中工作,但是每当我从工厂返回时,我都无法显示该字符串,即使控制台中显示了适当的字符串。我在这里错过了一些非常简单的东西吗?

Controller 在这里:

var app = angular.module('app', []);
app.controller('ctrl', ['$scope', function($scope) {
$scope.stuff = 1;
}])

工厂在这里:

app.factory('factory', ['$q', function($q) {
var list = [
{set1: 1,set2: 'name1'},
{set1: 2,set2: 'name2'}
];
var list2 = [
{set1: 1,set2: 'name6'},
{set1: 2,set2: 'name7'}
]
var service = {
getList: getList
}
return service;

function getList(id) {
var deferred = $q.defer();
if (id === 1) {
deferred.resolve(list);
} else if (id === 2) {
deferred.resolve(list2);
}
return deferred.promise;
}
}])

此处过滤:

app.filter('customFilter', ['factory', function(factory) {
var factoryHash = {};
return function(input, id) {
factory.getList(id)
.then(function(res) {
angular.forEach(res, function(value) {
this[value.set1] = value.set2;
}, factoryHash);
console.log('factoryHash', factoryHash[input])
return factoryHash[input];
})
}
}])

plnkr 在这里。

https://plnkr.co/edit/c4hYrRrdbBF9M2o5tVV5

最佳答案

您不能在过滤器内使用 Promise,因为过滤器将以任何方式执行,并且当您的 Promise 结束时,函数已经将结果返回到 UI。

关于angularjs - Angular 自定义过滤器不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36581243/

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