2013-06-01 41 views
0

我是Ember.js的初学者,我想我的问题有一个非常简单的答案,请耐心等待。在Ember.js中获取控制器内的属性

我尝试在控制器属性和控制器相应模板中的Ember.TextField中的 “value”属性之间建立双向绑定。我已经在succeded给出属性在控制器被反映在Ember.TexField的值属性的特定初始值,如:

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中输入的值?

任何提示,意见和建议,非常感谢!

谢谢!

编辑: 这两个答案都完成了我正在尝试做的事情。我得到它的工作太:我创建了App.IndexController的具体实例,具有扩展它,这样以后:

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

,可以从控制台与App.cueController.get('aProperty')检索aProperty值。然而,Ember的文档中的所有例子都不会创建控制器的具体实例,所以我想知道这是否有必要,而Ember对于真实世界的应用程序所做的更少。有任何想法吗?

回答

0

由于使用__container__仅用于调试目的,如果要记录的属性更改,而无需使用专用__container__您可以在控制器属性上设置观察者,观察更改并将新值记录到调试器控制台。

实施例:

App = Ember.Application.create({}); 

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

工作jsbin

希望它可以使用`__container__`仅用于调试帮助

+0

创建控制器外容器并不是与Ember其余部分互操作的好主意。 –

+0

@LukeMelia你是对的,这是一个快速和肮脏的答案...我已经改变它以反映更多的烬协定,希望现在更传统:) – intuitivepixel

相关问题