Ember.js(pre4)数组控制器未保持状态
Ember.js (pre4) array controller not keeping state
编辑2013-03-02
这似乎在RC1 中得到了解决
在Ember.js的早期版本中,控制器会保留分配给它们的状态,但这似乎是Pre4中的一个问题。
所以如果我有这个控制器
App.UsersController = Ember.ArrayController.extend({
content: ['mike', 'jen', 'sofia'],
_content_observer: (function(){
/* I'm called, but my author doesn't know why */
console.log('Content was altered! But why? And by whom?');
}).observes('content')
});
由于某些无法解释的原因,内容被覆盖。我不想使用ember数据,但我似乎是被迫这样做的。
这个JS Fiddle举例说明了这个问题。
怎么回事?我该如何阻止它,还是这是一种根深蒂固的固执己见,以至于我需要接受它并顺其自然?
编辑
更进一步地说,即使您覆盖了setupController
挂钩,作为model
设置的任何内容都将被设置为content
值。
例如:
UsersRoute = Ember.Route.extend({
model: function() {
/*I should never be called, but I am. How curious.*/
return ['This','Shouldnt','Be','Assigned'];
},
setupController: function() {
/* According to http://emberjs.com/guides/routing/specifying-a-routes-model/, I should prevent the model from being assigned to content, but I don't */
}
});
UsersController.content
将以值['This','Shouldnt','Be','Assigned']
结束
查看此更新的fiddle
这并不是一个真正的成员数据。新路由器自动设置控制器的内容属性。不是从控制器dedinition中设置内容,而是通过覆盖模型挂钩来自定义将用于路由的模型。例如:
App.UsersRoute = Ember.Route.extend({
model: function() {
return ['mike', 'jen', 'sofia', 'greta']
}
}
我在这里修改了你的jsfiddle:http://jsfiddle.net/WGYmg/
您可以使用setupController
方法根据自己的喜好设置控制器的内容:
setupController: function(controller) {
controller.set('content', []);
}
看看这个小提琴
编辑
您可以使用model
方法返回原始内容:
model: function () {
var c = this.controllerFor('users');
return c.get('content');
}
这有点粗鲁,但仍然..:)
请参阅更新的fiddle
相关文章:
- 如何声明具有相同控制器的处于相同状态的多个模板
- 作用域变量未从状态父控制器继承到子控制器
- 在角度上不同控制器之间共享状态
- 更改控制器中ng重复中定义的变量的状态
- 如何将值与$scope绑定,以从定义状态ui路由器的控制器中使用ng模型进行查看
- AngularJS:控制器在使用UI路由器更改状态时多次注册
- Ember JS中控制器之间共享状态的正确方式
- UI 路由器 AngularJS 控制器无法使用状态
- 使用工厂时控制器/模板不共享相同的状态
- 如何在路由更改之间维护视图(控制器)状态
- 将状态参数传递给状态提供程序中设置的控制器
- AngularJS:使用不同的控制器保持不同视图之间的视图状态
- Jquery 序列化 :尝试在不提交表单的情况下将表单状态传递给 ASP.NET MVC 控制器
- HTTP 状态 500 - ..IllegalArgumentException:当我在 spring 控制器中使用 R
- uirouter父状态,子状态控制器
- 在ui-router状态控制器中检索查询参数
- Angular UI路由器:我应该在哪里改变状态?控制器吗?服务?事件监听器
- 通过状态控制器共享资源对象
- 如何使用onmouseover将父状态控制器扩展到子状态
- 如果AngularJS中的父状态控制器发生了变化,我该如何重新加载子状态?