混搭 Wirecloud 和 Angular js

Mashup Wirecloud and Angular js

我已经通过 angular.js 开发了一个应用程序 - 小部件 - 它将托管在 WireCloud 中。我需要获取在应用程序中登录的用户的用户名。 为此,我不得不使用 MashupPlatform.context.get('username') - 但是 Angular 显然不理解 "MashupPlatform" 因为它是一个外部对象。

你知道如何解决这个问题吗?

谢谢

当您的小部件部署到 Wirecloud 平台时,将加载(或注入)MashupPlatform。如果只是想在本地测试一下,可以这样问有没有:

if (typeof MashupPlatform === 'undefined') {
  username = "testusername";
}
else {
  username = MashupPlatform.context.get('username');
}

正如@Meier 所说,当您的小部件在 Wirecloud 中加载时,MashupPlatform 被注入,但要在本地测试它,您可以使用 mock-mashupplatform library,它在 npm 和 bower 中。目前几乎所有的 wirecloud 0.7 都支持,但本周将支持 0.8。

对于此示例,您将执行如下操作:

// Create the default values in a dictionary
var preferencesValues = {
    'username': 'myusername'
};
// Construct the default values with strategies
var values = {
    'prefs.get': MockMP.strategy.dict(preferencesValues)
};

// Construct the MashupPlatform with that values
window.MashupPlatform = new MockMP.MockMP(values);

终于简单了。我的路由有 html 个链接,但这是错误的。我将路由样式更改为 javascript ( ng-click ) 并且可以。

谢谢大家的帮助。