2014-02-23 94 views
0

我正在使用durandal在查看模型之间传递消息。所以我用下面的代码来发送消息durandal事件无法正常工作

return (datacontext.getData("Test, testData)) 
       .then(app.trigger('FireEvent', `dataObsArray`)) 
       .fail(queryFailed); 

然后我用下面的代码来检索消息

app.on('FireEvent').then(function (data) { 
      testObsArray(data); 
     }); 

但是当我把断点在app.on此线路上testObsArray(data); 它不停止。调试器停止线app.on('FireEvent').then(function (data)

我不得到的数据。为什么这样?当我传递数据到dataObsArray时,有10条记录。

我不知道为什么我没有得到任何数据。我错在哪里?我对杜兰达非常陌生,因此如果我无法正确解释这一点,我非常抱歉,如果您需要更多说明,请告诉我。

回答

3

你的问题在这里;

.then(app.trigger('FireEvent', `dataObsArray`)) 

,将解决的方法是调用app.trigger,得到的结果,并传递作为链下一步then(),这不太可能是你想要的。您需要包装在一个匿名函数,以便then()可以的dataContext调用后调用它

return (datacontext.getData("Test, testData)) 
       .then(function(data) { 
        app.trigger('FireEvent', data?) //This depends on what getData returns 
       }) 
       .fail(queryFailed); 
+0

如果我不想传递从datacontext返回的数据该怎么办?我试过使用功能,但它仍然无法正常工作。 – Happy

+0

getData()是什么呢?设置将由事件监听器收集的内容?如果是这样的话,使用一个函数应该可以工作,如果不是,你还有另一个问题。不幸的是,我不能说没有更多的信息。 – Tyrsius

+0

getData只是从webapi返回一些数据。实际上我有2 app.trigger这样返回(datacontext.getData(“测试,TESTDATA)) 。然后(函数(){ app.trigger( 'FireEvent',dataObsArray); app.trigger( 'FireEvent1',TESTDATA ); }) .fail(queryFailed); – Happy