【问题标题】:Ember Checkbox -- Accessing model property from different controllerEmber Checkbox -- 从不同的控制器访问模型属性
【发布时间】:2015-10-11 04:29:27
【问题描述】:

我在模式弹出窗口上有一个复选框,需要根据不相关模型上的值对其进行检查。模型是 Team,我需要访问的属性称为 syncAccount(布尔值),所以输入助手可能看起来像这样:

{{input type="checkbox" name="syncAccount" checked=team.syncAccount }}

如何从模式访问或绑定到 team.syncAccount?我有一个 ModalImportController,但没有关联的路由。在这个控制器中是否有某种方法可以分配一个属性来查找或绑定到当前团队的 syncAccount 值(并在他们切换时更新)?

同样,我需要切换复选框以发送此字段的更新请求。这需要是一个 ajax 请求,还是有一些方法可以将复选框使用的模型设置为指向一个团队,以便我可以调用 @model.save()?

【问题讨论】:

    标签: ember.js checkbox


    【解决方案1】:

    要从另一个控制器访问属性,您首先需要通过needs 包含该属性,如下所示:

    App.ModalImportController = Ember.ArrayController.extend({
      needs: "team",
      teamController: Ember.computed.alias("controllers.team"),
    });
    

    那么你就可以像这样访问它的属性:

    // still in ModalImportController
    syncAccount: function() {
        return this.get('teamController.syncAccount');
    }.property('teamController.syncAccount')
    

    我现在还没有测试它,但我是在一个稍微不同的设置中这样做的。

    来源: [http://guides.emberjs.com/v1.13.0/controllers/dependencies-between-controllers/][1]

    为了切换发送更新请求,我使用:

    syncAccount: Ember.computed('model.syncAccount', {
        get: function() {
            return this.get('model.syncAccount');
        },
        set: function(key, value) {
            this.set('model.syncAccount', value);
            // do all you need to do via AJAX here
            return value;
        }
    })
    

    请注意,您也可以从此处获取值,因此请将您的 input-helper 更改为:

    {{input type="checkbox" name="syncAccount" value=syncAccount }}
    

    【讨论】:

    • 我没有团队控制器。相反,在应用程序控制器中,我有一个名为 currentTeam 的助手。我正在使用您的建议来访问这样的值:syncAccount: function() { this.get('applicationController.currentTeam.syncAccount'); }.property('currentTeam.syncAccount') syncAccount 的值最初似乎没有得到查找。在开发工具中,如果我调用 $E.syncAccount,它会返回: function() App.ModalsController.Ember.ObjectController.extend.syncAccount() 切换复选框后,调用 $E.syncAccount 会返回 true。如何在打开之前设置此值?
    • 看起来好像是输入助手的问题:value=syncAccount 不起作用,但 value="syncAccount" 将复选框标记为在第一次打开时选中。切换仍然不起作用(即单击复选框不会在检查/不检查之间切换。您是否知道这是否是我必须在控制器中处理的行为(即不是默认值?)
    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多