我刚刚开始使用Ember并在编写一些茉莉花测试时遇到了这个问题.
鉴于我有以下代码
App.RecipeController = Ember.Controller.extend
selectedGrain: null
amount: null
recipeGrains: Ember.A()
totalWeight: (->
weight = 0
@get('recipeGrains').forEach (grain) ->
weight += grain.get('weight')
weight
).property('recipeGrains.@each')
addGrain: ->
grain = Ember.Object.create
name: @get('selectedGrain').get('name')
weight: parseFloat(@get('amount'))
@get('recipeGrains').pushObject(grain)
@set('selectedGrain', null)
@set('amount', null)
Run Code Online (Sandbox Code Playgroud)
我写下面的测试.
describe("Controllers", function() {
describe("NewRecipeController", function() {
var controller;
beforeEach(function() {
controller = Brewery.NewRecipeController.create();
});
it("calculates the correct total weight", function() {
var grains = controller.get('recipeGrains');
grains.pushObject(Ember.Object.create({weight: 4.0}));
grains.pushObject(Ember.Object.create({weight: 3.2}));
expect(controller.get('totalWeight')).toEqual(7.2);
});
it ("adds grains based on its selected grain", function() { …Run Code Online (Sandbox Code Playgroud) 您设置什么技术解决方案来使您的应用程序源代码至少不会在生产中广泛公开分发到世界其他地方?
有些人可能会认为这段代码没有太大价值,但在我看来,完整记录应用程序的对象模型是一个真正的竞争劣势。
您有什么想法、论点、模式可以与我们分享吗?
我一定不清楚:这个想法不是向允许的用户隐藏应用程序(在这种情况下,我同意,混淆在很大程度上就足够了)。我的意思是当用户未登录时根本不提供应用程序服务。
filter我的控制器中有一个属性,我想绑定到相应的DOM元素.
到目前为止,我能够显示filter价值,做:
%input type="text" value=filter
Run Code Online (Sandbox Code Playgroud)
但我想要的是filter通过双向绑定将输入变化反映回来......
任何线索?
beforeModel在Ember中加载路径时如何访问函数中的目标路径参数?
文档指的beforeModel是中止或重定向转换的正确位置 - 但是如果没有目标参数,我无法添加所需的逻辑来确定是否应该重定向.
App.PostRoute = Ember.Route.extend({
beforeModel: function(transition) {
// transition doesn't seem to have the target params
}
});
Run Code Online (Sandbox Code Playgroud)
我也无法找到有关API文档中描述的Transition对象的任何明确文档:
http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel
是否有夹具适配器的提交方法?它有什么作用?据我所知,store.commit()当与REST适配器一起使用时会发出API调用.
我可以使用isLoaded夹具适配器的属性吗?
基本上我有2个记录在我的控制器名为x和y和具有的许多记录的属性内容y类型.咖啡代码如下:
someMethod: (->
content.removeObject(y)
).('x.isLoaded')
anotherMethod: ->
//modify x
Application.store.commit()
Run Code Online (Sandbox Code Playgroud)
当我调用anotherMethod它更新x并在商店上运行提交时,因此someMethod被调用.我的实际应用程序运行正常,但如果测试从内容和商店中someMethod删除记录y.难道是isLoaded和commit不是为固定数据存储?
有没有办法访问嵌入式模型对象的父对象?例如 :
App.Person = DS.Model.extend({
name : DS.attr('string'),
emails : DS.hasMany('App.Email', { embedded: true })
});
App.Email = DS.Model.extend({
label : DS.attr('string'),
email : DS.attr('string'),
setParentUpdated: function() {
if(this.get('isDirty') == true)
// this.get('parent').get('stateManager').goToState('updated');
// I would like to do something like this.get('parent')
// to access 'App.Person' instance object
}.observes('isDirty')
});
Run Code Online (Sandbox Code Playgroud) 我有一个项目模型,每个项目可以有很多项目.这可以是很多层次.
我有这个jsfiddle http://jsfiddle.net/rmossuk/xmcBf/3/
如何更改此项以便能够拥有多个级别的项目,以及如何循环显示每个级别以显示它们?
我还需要能够订购每个项目子项并将该命令存储到服务器.
请有人能告诉我你怎么做到这一点?
更新:
我现在已经设法实现了这个问题,可以在很多层面深入探讨这个问题,请看http://jsfiddle.net/rmossuk/fBmmS/3/
但我需要一种方式来说明每个项目的顺序,并按顺序显示它们.目前它只显示itemIds数组中的子项,但这只用于关联目的,我不能改变它重新排序可以吗?
有人知道怎么做吗 ?
非常感谢瑞克
我试图绑定一个事件到下拉列表,因为昨天没有任何帮助去JavaScript聊天室没有人能够找到我的问题的修复程序,但后来我试图绑定我的下拉列表如下
$('<%= ddl.ID %>').bind('change',myfunction);
Run Code Online (Sandbox Code Playgroud)
至
$(<%= ddl.ID %>).bind('change',myfunction);
Run Code Online (Sandbox Code Playgroud)
它开始工作,任何想法?
编辑
对不起,它不在IE上工作:(