相关疑难解决方法(0)

Emberjs:跨控制器绑定失败,因为'内容'尚不存在

我正在尝试使用'needs'功能允许一个控制器从另一个控制器获取值.这是一个JSFiddle,在绑定值之前显示我的应用程序的精简版本:http: //jsfiddle.net/kevinwh/WRxnE/4/

App.ApplicationController = Ember.ObjectController.extend({
  init: function() {
    this._super();
  },
  dishClicked: function() {
    console.log('clicked');
    this.incrementProperty('clickCount');
  }
});

App.DishController = Ember.ObjectController.extend({
  needs: ['application'],
  init: function() {
    this._super();
  },
  //clickCountBinding: 'controllers.application.clickCount'
});
Run Code Online (Sandbox Code Playgroud)

基本上,我的ApplicationController有一个clickCount属性,只要单击其中一个Dish链接,就会更新(通过操作).点击链接也可以通过linkTo激活DishRoute.

现在,我希望包含的DishController也可以访问ApplicationController的clickCount.所以我添加'needs'属性和clickCountBinding属性(必须在JSFiddle中取消注释).然后,当我点击一个链接时,我得到一个投诉:断言失败:无法将set('clickCount',0)委托给object proxy的'content'属性:它的'content'未定义.

显然,在控制器上设置模型内容之前,正在激活绑定.由于控制器是由linkTo设置的,因此我的DishRoute.model()和DishRoute.setupController()方法不会被调用.此外,在绑定错误发生之前甚至不调用DishController.init()方法.

我考虑过我应该将内容成员对象粘贴到类中(在JSFiddle中注释掉)的可能性,但这样做会产生奇怪的结果:点击计数会针对不同的链接单独递增.有趣,但不是我追求的.

那么 - 如何在这些控制器之间共享clickCount值?是否有其他方法在DishController中设置内容,以便绑定可以工作?

ember.js

1
推荐指数
1
解决办法
1280
查看次数

标签 统计

ember.js ×1