簡體   English   中英

在Ember.js中獲取控制器內的屬性

[英]Getting the property inside a controller in Ember.js

我是Ember.js的初學者,我想我的問題有一個非常簡單的答案所以請耐心等待。

我嘗試在控制器屬性和控制器的對應模板中的Ember.TextField中的“value”屬性之間建立雙向綁定。 我已經成功地為控制器中的屬性提供了一個特定的初始值,該值反映在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中輸入的值?

任何提示,評論和建議都非常感謝!

謝謝!

編輯:下面的兩個答案都完成了我想要做的事情。 我也得到了它:我在擴展它之后創建了App.IndexController的具體實例,如下所示:

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

並可以使用App.cueController.get('aProperty')從控制台檢索aProperty的值。 但是,Ember文檔中的所有示例都沒有創建控制器的具體實例,所以我想知道這是否有必要,更不用說Ember對實際應用程序的鼓勵。 有任何想法嗎?

您應該在調試控制台中查找這樣的控制器:

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

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

由於使用__container__僅用於調試目的,如果要在不使用私有__container__情況下記錄屬性更改,則可以在控制器屬性上設置觀察器以監視更改並將新值記錄到調試器控制台。

例:

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

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

工作jsbin

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM