Ember.js在控制器之间传递属性
Ember.js pass properties between controllers
干杯!我有两个控制器,我想从TravelClient.TourController
访问takenSeatsNumbers
。
TravelClient.TourController = Ember.ObjectController.extend({
needs: ['tour.seats']
});
TravelClient.TourSeatsController = Ember.ObjectController.extend({
takenSeatsNumbers: []
});
我以正确的方式使用needs
吗?如何从tour
模板中获取takenSeatsNumbers
?
如上所述,这是一个当前的错误,因此上面的看起来是,但实际上不会起作用,正如jsFiddle所展示的那样。目前的解决方案是在控制器的实例中通过路由中的this.controllerFor
。这还远远不够理想,但目前已经足够了。
发生这种情况是因为Ember指的是使用点符号的控制器,而如果您使用camelCase或*under_scores*,则它将为您创建不同的实例。
解决方案是从您的路线注入控制器,如下所示:
TravelClient.IndexRoute = Ember.Route.extend({
setupController: function(controller) {
var tourSeatsController = this.controllerFor('tour.seats');
tourSeatsController.set('takenSeatsNumbers', [1,2,3]);
controller.set('tourSeatsController', tourSeatsController);
}
});
然后您可以在视图中使用它作为:{{tourSeatsController.takenSeatsNumbers.length}}
。
此代码基于ember-pre4。来自另一个控制器的属性代理似乎是一种模式,并且可能在mixin:的帮助下进行推广
TravelClient.TourController = Ember.ObjectController.extend({
needs: ['tourSeats'],
someMethod : function(){
var tourSeatsController = this.get("controllers.tourSeats");
// do something with it
},
takenSeatsNumbers : function(){ //proxy the property
return this.get("controllers.tourSeats.takenSeatsNumbers")
}.property("controllers.tourSeats.takenSeatsNumbers")
});
TravelClient.TourSeatsController = Ember.ObjectController.extend({
takenSeatsNumbers: []
});
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- Bacon.js:流和属性之间的实际差异
- JS get元素之间的差异's属性与elem.getAttribute(attr)和elem[attr]
- JS构造函数的原型属性与其原型之间的区别
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 向构造函数或原型添加属性之间的区别
- 隐藏元素:Javascript属性和CSS样式之间的区别
- React组件之间共享属性
- 正在节点d3.js之间创建链接,当前返回Uncaught TypeError:无法读取属性'weight'
- 如何在 Ramda 中的对象属性之间移动值
- node.js 中对象上的方法和属性之间的差异
- Javascript:属性描述符和内置属性属性之间的关系是什么
- 构造函数中的方法与函数的原型属性之间的差异
- 我如何使用 javascript 或 jquery 在单击时在任何 css 属性之间切换
- instanceof和构造函数属性之间的差异
- Socket.io,Socket.set()和Socket属性之间的差异
- (CSS/jQuery)如何用jQuery解决top和bottom属性之间的冲突
- 在JavaScript/nodejs中,访问变量和访问变量的属性之间是否存在速度差异?
- 这个属性和带冒号的属性之间的区别