Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度和角度元数据_Angularjs_Breeze_Promise_Q - Fatal编程技术网

Angularjs 角度和角度元数据

Angularjs 角度和角度元数据,angularjs,breeze,promise,q,Angularjs,Breeze,Promise,Q,我很好奇,在使用Angular时,是否有其他方法可以从breeze获取元数据。由于$q和q承诺彼此不友好,我决定只使用q.js承诺,而不使用$q。在我的控制器中,我正在检查元数据存储是否为空: if (mainDataService.manager.metadataStore.isEmpty()) { $log.info('metadataStore is empty') ; mainDataServi

我很好奇,在使用Angular时,是否有其他方法可以从breeze获取元数据。由于$q和q承诺彼此不友好,我决定只使用q.js承诺,而不使用$q。在我的控制器中,我正在检查元数据存储是否为空:

  if (mainDataService.manager.metadataStore.isEmpty())
            {
                $log.info('metadataStore is empty') ;

                mainDataService.getMetaData()
                  .then(function ()
                  {
                     EnableCreateButton();
                  });
            }
如果我没有元数据,基本的想法是去获取它,然后启用按钮,让我创建一个新的记录

为了实现这一点,我在我的数据服务中定义了一个Q承诺,然后在breeze解决了这个承诺之后,我就解决了我的承诺

  function getMetaData()
{

    var myMetaDataPromise = Q.defer();

    Q.delay(0).then(function () {

        manager.metadataStore.fetchMetadata(serviceName).then(function () {
            myMetaDataPromise.resolve();
        });

    });
    return myMetaDataPromise.promise;



}
任何让这个更干净的建议都会很好。我的一个想法是在控制器中定义承诺,让数据服务返回微风承诺。我只是觉得这会把控制器弄得乱七八糟,而不会把关注点分开

看一看新的,已经广泛使用并取得了很好的效果

我们还没有对它进行文档记录,但是注释解释了如何“安装”和使用它

然后,您的
mainDataService.getMetaData()
可能是:

return manager.metadataStore.fetchMetadata(serviceName).to$q(); 将manager.metadataStore.fetchMetadata(serviceName).to$q()返回; 然后你就按照你的意愿去做:

mainDataService.getMetaData() .then(function() { EnableCreateButton(); }); mainDataService.getMetaData() .then(函数(){EnableCreateButton();}); 你现在在
$q
的土地上。Angular将
$apply
自动启用您的EnableCreateButton。

鉴于“Kris Kowal的Q和$Q之间的差异”,您可能希望重新考虑您只使用Q.js承诺而不使用$Q的决定。