【问题标题】:Getting the property inside a controller in Ember.js在 Ember.js 中获取控制器内部的属性
【发布时间】:2023-03-21 16:10:01
【问题描述】:

我是 Ember.js 的初学者,我想我的问题有一个非常简单的答案,所以请多多包涵。

我尝试在控制器属性和 控制器对应模板中的 Ember.TextField 中的“值”属性。我已经成功地为控制器中的属性赋予了特定的初始值,该初始值反映在 Ember.TexField 的 value 属性中,例如:

js代码:

App = Ember.Application.create();
App.IndexController = Ember.ObjectController.extend({
              aProperty: 1 });

模板:

<script type:"text/x-handlebars" data-template-name="index">
{{view Ember.TextField valueBinding="aProperty"}}
</script>

现在文本字段显示值(“1”),一切都很好。 如果我现在尝试在文本字段中输入一个新值,例如“2”,并尝试使用 App.IndexController.get("aProperty") 在浏览器控制台中检查“aProperty”的值,它不起作用并抛出一个错误并说“get()”没有定义。 如何从 IndexController 中检索“aProperty”的值并检查它是否已将值更新为我在 Ember.TextField 中输入的值?

非常感谢任何提示、cmets 和建议!

谢谢!

编辑: 下面的两个答案都完成了我想做的事情。我也得到了它的工作:我在扩展它之后创建了App.IndexController 的具体实例,如下所示:

App.IndexController = Ember.ObjectController.extend({
              aProperty: 1 });
App.indexController = App.IndexController.create();

并且可以使用App.cueController.get('aProperty') 从控制台检索aProperty 的值。但是,Ember 文档中的所有示例都从未创建控制器的具体实例,所以我想知道这是否有必要,更不用说 Ember 对现实世界应用程序的鼓励了。有什么想法吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您应该在调试控制台中像这样查找控制器:

    App.__container__.lookup('controller:index').get('aProperty')
    

    http://jsbin.com/uxojek/9/edit

    【讨论】:

    • 使用__container__ 仅用于调试目的,强烈建议不要在您的应用程序代码中使用...
    【解决方案2】:

    由于使用__container__ 仅用于调试目的,如果您想在不使用私有__container__ 的情况下记录属性更改,您可以在控制器属性上设置观察者以观察更改并将新值记录到调试器控制台。

    例子:

    App = Ember.Application.create({});
    
    App.IndexController = Ember.ObjectController.extend({
      aProperty: 1,
      aPropertyDidChange: function() {
        console.log(this.get('aProperty'));
      }.observes('aProperty')
    });
    

    工作jsbin

    希望对你有帮助

    【讨论】:

    • 在容器外部手动创建控制器对于与 Ember 其余部分的互操作性并不是一个好主意。
    • @LukeMelia 你是绝对正确的,这是一个快速而肮脏的答案......我已经改变了它以反映更多的余烬约定,希望它现在更传统:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多