WinJS与AngularJS合作

12

我有很多AngularJS代码(由同事编写),我试图评估其中多少可在Windows 8 Metro应用程序中重复使用(或者无论他们决定如何重命名它)。

有人知道AngularJS与WinJS结合得如何吗?

由于Windows 8仍然非常新,可能没有太多人(如果有任何人的话)尝试使用AngularJS构建Windows 8应用程序,有没有人尝试过使用需要特定专有HTML属性的其他框架(例如可能是Yahoo Connected TV应用程序)与AngularJS结合使用的经验。

我的主要关注点是当内容通过AngularJS动态插入DOM时,WinJS专有的HTML属性是否能够被正确地捕获和执行,但我不知道。

我仍在等待我的Windows开发工具箱到货,所以现在我只是在进行研究。如果在任何人回答之前它到达,我会回来分享我的结果。


你是如何在视图之间进行导航的?你使用AngularJS路由还是WinJS PageControl? - Zach
@Zach 我最终没有使用AngularJS。我们的代码过于复杂,而且我还有截止日期。与其试图把Angular的东西硬塞进去,使用文档完善的Metro SDK 更快更好。顺便提一下,在Windows 8发布之前我就问这个问题了,现在使用Angular和Metro的信息肯定更多了。 - Endophage
非常感谢。WinJS和AngularJS有许多共同点。也许WinJS已经足够了,而且它具有更好的UI动画支持。 - Zach
5个回答

11

这只是一个普通的HTML平台,与IE10在功能方面一样。对于某些直接设置innerHTML等的限制,需要先通过toStaticHTML进行处理。但是,这种限制可以被绕过。

请注意,编写HTML5 Win8应用程序并不需要使用WinJS。


2
如果您不使用WinJS,那么这将是很多重复劳动...在某些情况下,例如添加项目到设置飞出窗口中,它也是必需的。此外,它还提供了许多UI和布局组件,使得我无需自己编写所有CSS来实现Windows 8的外观和感觉,从而达到相同的效果。 - Endophage
你可以使用CSS。我在几个地方都这样做了。此外,WinJS中的所有功能都可以在没有它的情况下完成...没有特殊的钩子。它只是可能会调用WinRT进行某些操作的JS(例如设置就是一个很好的例子)。 - Dominic Hopton
好的,如果我编写一些Angular模板,使用与WinJS指令生成相同的类执行相同的操作,那么一切都应该正常工作,而无需编写任何CSS? - Endophage
是的,我为应用栏按钮做了这个。 - Dominic Hopton

5

WinJS.Binding 命名空间实现了许多与 AngularJS 相似的功能。它使用类似于 AngularJS 的 data- 属性,因此将模板从 AngularJS 移植到 WinJS 可能并不太难,尽管后台 JavaScript 的许多部分可能需要更改。


1
最终我只是用WinJS编写了所有内容。我更感兴趣的是将Angular的模型和控制器插入到WinJS视图中。这些视图永远不会跨平台兼容,但我希望能够重复使用很多业务逻辑。 - Endophage

2

请查看这个库:https://github.com/codemonkeychris/angular-winjs,它可以帮助您在AngularJS中使用WinJS UI控件。在测试应用程序自述文件中,它讲述了您需要做什么才能在Windows 8环境中启动和运行Angular。


1

0

虽然我们可以无缝地使用Angular和WinJS(除了一些小的jquery和appendto问题),但关键是如何在angularJS中使用winJS控件。我相信我们最终会编写指令来在angular项目中使用WinJS控件(就像通常我们为jquery小部件所做的那样)。在我看来,我们需要使用winjs控件,因为它们遵循win8标准并具有外观和感觉。 另一个问题是要使用哪个导航框架 - 我认为答案应该是angularJS,因为它简单而强大:) 另一方面,WinJS具有内置的丰富indexedDB、localstorage功能,这些功能可能可以在angular中重复使用。 简而言之,我认为两者可以互补地共同工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接