我很好奇在使用 Angular 时是否有任何替代方法可以从微风中获取元数据。由于 $q 和 Q Promise 不能相互配合,我决定只使用 Q.js Promise 而不是 $q。在我的控制器中,我正在检查 metaDataStore 是否为空:
if (mainDataService.manager.metadataStore.isEmpty())
{
$log.info('metadataStore is empty') ;
mainDataService.getMetaData()
.then(function ()
{
EnableCreateButton();
});
}
如果我没有元数据,基本想法是去获取它,然后启用允许我创建新记录的按钮。
为了实现这一点,我在我的数据服务中定义了一个 Q Promise,然后在微风解决了这个承诺之后,我解决了我的承诺。
function getMetaData()
{
var myMetaDataPromise = Q.defer();
Q.delay(0).then(function () {
manager.metadataStore.fetchMetadata(serviceName).then(function () {
myMetaDataPromise.resolve();
});
});
return myMetaDataPromise.promise;
}
任何使这个更清洁的建议都会很棒。我的一个想法是在控制器中定义承诺并让数据服务返回微风承诺。我只是认为这会使控制器混乱,而不是分离出问题。