Ember JS中控制器之间共享状态的正确方式
Correct way to share state between controllers in Ember JS
图像中有一个ArrayController
,它显示项目列表,每个项目都使用自己的ObjectController
。现在您在ArrayController
上有了一个操作处理程序,它应该更改所有项的某些属性。此属性不应持久化,它仅用于视图状态。例如isSelected
。
看看Todos的例子(http://todomvc.com/architecture-examples/emberjs/)它似乎与CCD_ 5性质非常相似。但主要的区别在于,这个属性是存储在数据库中的,因此模型在这里是正确的位置。
在Ember.js中,控制器允许您用显示逻辑来装饰模型。通常,您的模型将具有保存到服务器的属性,而控制器将具有应用程序不需要保存到服务器上的属性。
是否有任何方法可以循环通过任何ArrayController
的所有项目控制器并更新控制器的属性?这是正确的方法吗?
对我来说,这听起来是正确的方法。您引用的控制器用于保存不需要持久化的属性。这些属性保持应用程序状态和/或在显示逻辑中使用。
与Todos示例的主要区别在于,您将在itemController中而不是在模型中修改属性。(请记住,您不希望属性存储在服务器上)。
我会做的事情是这样的:
App.MyArrayController = Ember.ArrayController.extend({
itemController: 'item',
actions: {
toggleSelection: function() {
this.forEach(function(item, index) {
item.toggleProperty('isSelected');
});
}
}
});
如果您希望操作更改模型,则必须访问每个itemController的内容属性。
希望它能有所帮助!
相关文章:
- 设置两个反应组件之间状态的正确方式
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 实现已验证用户更新状态的最佳方式,作为对系统中已更改状态的反应.(ASP.NET MVC网站)
- Ember JS中控制器之间共享状态的正确方式
- 如何以多个目标可以同时处于活动状态的方式实现“滚动间谍”
- 以编程方式切换谷歌日历 API 的忙/闲事件状态
- AngularJS-处理手动输入URL状态的最佳方式
- jQuery Mobile-以编程方式更改单选按钮状态
- 以程序方式设置时,未在视图模型中填充选中状态
- 如何以编程方式触发自定义插件状态
- 通过编程方式改变单选按钮的状态
- 从react组件'数组类型状态属性弹出的正确方式
- 我如何在JavaScript中以编程方式创建的状态之间切换
- 这是在asp.net中显示状态消息的最佳方式
- Ionic如何以编程方式返回状态
- 角度方式'将存储状态添加到应用程序
- ReactJS推送数组类型状态的正确方式
- 纯CSS方式使按钮有两个点击状态
- 设计模块的最佳方式,使其状态易于模拟和测试