Jea*_*eri 5 data-binding controller ember.js
我正在尝试将ApplicationController绑定到IndexController.这是我的jsfiddle.总而言之,这是我在Application控制器中的绑定
indexIsClickedBinding: "App.indexController.isClicked",
isIndexClicked: function() {
    alert("its changed to " + this.get("indexIsClicked") ) ;
}.observes('indexIsClicked'), 
因此,当IndexController中的isClicked值发生更改时,indexIsClickedBinding不会执行任何操作.我的代码中有什么错误的建议吗?
干杯
Wil*_*ney 23
虽然解决方案很简单,但我试着解释一下.如果您不确定,请随时提出任何问题.
你绑定了一个实例的属性App.indexController.但是,此实例不存在,因为Ember.JS不再直接放置控制器的实例App.
它曾经驻留App在以前版本的Ember中,但不再存在,因为使用其绝对名称引用控制器是不好的做法,因为它会在控制器之间创建紧密耦合.
这就是Ember.JS有其他方法来引用控制器的原因.在当前控制器中需要其他控制器是一种常见的要求.Ember.JS有以下方法:
this.controllerFor()在Ember.Route:http://emberjs.com/guides/routing/setting-up-a-controller/needs它告诉当前控制器它需要访问哪些控制器:https://github.com/emberjs/ember.js/pull/1731因此,如果我们实现了needs,那么你的控制器现在可以访问另一个控制器,以及它拥有的属性:http://jsfiddle.net/uB5tX/7/
通过使用needs,我们松散地耦合了控制器.我们用它的名字引用它,Ember.JS将为我们查找控制器.如果我们改变App那么我们将不需要改变任何东西,如果/当Ember.JS改变控制器的行为时,我们不应该needs再次更新我们,因为当行为改变时,那么它needs也会更新,带回来正确的控制器.
| 归档时间: | 
 | 
| 查看次数: | 4413 次 | 
| 最近记录: |