我发现Ember的反直觉是你可以使用参数覆盖计算属性设置函数(http://emberjs.com/#toc_computed-properties-setters)create().见http://jsfiddle.net/zJQJw/2/
我发现最好的解决方法是打电话create().setProperties(properties)而不是create(properties),但这对我来说似乎是一个不必要的问题.我意识到这可能会打破一些应用程序,但你会考虑让create()行为更像setProperties()?
我要求这个的动机是在使用模式init()之前调用它.这还不是一个大问题,但我可以看到在某些情况下这是不可取的.这是一个完全人为的例子,但也许你可以看到我得到了什么?http://jsfiddle.net/QJ8vX/2/setProperties()create().setProperties(properties)
我可以看到维持当前行为的唯一原因是执行特定于实例的setter方法覆盖.但在这些情况下,你可以轻松做到MyClass.extend({ overridenMethod: ... }).create(properties)
Ember 1.0会考虑这样的变化吗?或者我对Ember的对象模型应该如何工作有错误的想法?
如果你想直接跳转jsFiddle代码,它就在这里:http://jsfiddle.net/bbkxK/2/
理想情况下,我希望两个对象实例都为theMessage输出"其他东西".
这是上下文:我们有一个庞大的Ember应用程序,我们希望通过在我们的类定义中为全局单例指定适当的默认绑定来使用约定优于配置的方法(如果你想要切断并认为这很糟糕,有一个更好的方法,我都是耳朵.我不喜欢我们当前的架构,但它遵循Ember开发人员通过示例应用程序提出的模式).
因此,我们指定在正在运行的应用程序中"正常工作"的默认绑定.到目前为止一切都很顺利.问题是我们开始进行单元测试.一旦我们进行了大约500次单元测试,我们开始遇到测试隔离问题.某些测试会更新单例控制器的状态,然后其他测试将开始失败.在过去的几周里,它变成了一个巨大的混乱和时间.
为了隔离测试,我们开始尝试覆盖在我们在单元测试中创建的测试主题实例中在类级别指定的默认绑定.通常,我们会尝试使用对mock对象的静态引用将绑定替换为singleton.和我一起到目前为止?
在尝试了许多不同的方法之后,到目前为止我提出的最佳策略是MyApp.classWithDeferredDefaultBindings你可以在jsFiddle示例中看到的模式(http://jsfiddle.net/bbkxK/2/).
但是......它比正常的Ember做事方式更加冗长,而且感觉不对劲.我想我们可以创建一个mixin或Monkey-patch Ember来让它变得更好,但在我们迈出这一步之前,似乎是接触开发者和社区的好时机.
所以我的多重问题是:我们的方法是否适合在单元测试的上下文中覆盖默认的单例绑定?我们是否应该向Ember提出功能请求以更加无缝地支持它?你能说它实际上是框架中的一个错误吗?
在我的OS X 10.7.3(Lion)笔记本电脑上,我无法使用Date构造函数解析Qt WebKit的JavaScript日期字符串.使用jasmine-headless-webkit或phantomJS,所有调用如:
new Date("2012-04-10")
Run Code Online (Sandbox Code Playgroud)
总是回来
"Invalid Date"
Run Code Online (Sandbox Code Playgroud)
而不是有效的Date对象.几个星期前,一切都工作正常,我已经在六台计算机上检查了这个设置类似,并且无法在其他任何地方重现问题.
我很确定当我决定清除我原本未使用过的MacPorts安装时出现的问题(我很久以前就已经切换到Homebrew,正在做一些清洁工作).我怀疑有一个动态链接库已从我的系统中删除,Qt用它来进行日期解析.
有谁知道这个日期解析库可能被调用了什么?任何想法,如果我可以用Homebrew安装它或以某种方式手动修复缺少的依赖?
我已经尝试重新安装Qt和许多其他库,但没有解决问题.