gpt4 book ai didi

Ember.js - 查看 isVisible(或任何变量)绑定(bind)到 Controller 状态

转载 作者:行者123 更新时间:2023-12-04 23:24:25 25 4
gpt4 key购买 nike

如文档中所述, Controller 不应调用其关联 View 的方法或更改属性,而是 View 应绑定(bind)其关联 Controller 的状态。

有这个:

App.MyController = Ember.Controller.extend({
myViewVisible:false,
toggleViewVisibitity:function(){
this.set('myViewVisible', !this.get('myViewVisible'));
}
}
App.MyView = Ember.View.extend({
isVisible:function(){
return this.get('myViewVisible');
}.observes('myViewVisible')
}

当我从另一个 Controller 调用 toggleViewVisibility 时, View 中没有任何 react 。

我怎样才能使它正确?

提前致谢

最佳答案

它应该以这种方式工作:

App.MyController = Ember.Controller.extend({
myViewVisible:false,
toggleViewVisibitity:function(){
this.set('myViewVisible', !this.get('myViewVisible'));
}
}
App.MyView = Ember.View.extend({
isVisible:function(){
return this.get('controller.myViewVisible');
}.property('controller.myViewVisible'),
// even shorter version of the above
isVisible : Ember.computed.alias("controller.myViewVisible")
}

需要对您的代码进行更改:
  • 我将 View 的 isVisible 属性从观察者更改为属性。 每次被监视的属性更改时,观察者都会触发(= 函数执行)。所以这不是你需要的。但是您想将其定义为属性,以便 Ember 可以像这样访问它:view.get("isVisible")。因此我将其更改为属性。
  • 我更改了您的属性的依赖键。 Controller 被分配给您在属性 Controller 上的 View 。 因此,您需要在所需的属性前面加上 Controller 才能访问它。
  • 如您所见,我还提供了一个偶数 在 Ember.computed.alias 的帮助下,此逻辑的较短版本,但我想先向您展示更详细的解决方案。
  • 关于Ember.js - 查看 isVisible(或任何变量)绑定(bind)到 Controller 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15326337/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com