2013-07-10 48 views
2

我一直在使用Ember.js。現在我收到了一個我無法修復的奇怪行爲。這不是我第一次體驗它,但是在以前的場合,我在做出一些小小的改變之後才發現它。但是現在,我真的不知道是什麼導致了衝突。這個問題發生在控制器中。我有這個可笑的簡單控制,只是爲了測試:我的Ember的控制器屬性正在被直接回顯

App.AppColleaguesController = Ember.ArrayController.extend 
(
    { 
    needs: ['app'], 

    aNumber: function() 
    { 
     return this.get('controllers.app.personId'); 
    } 
    } 
); 

當然,該屬性定義上的AppController:

App.AppController = Ember.ArrayController.extend 
(
    { 
    loggedIn: false, 
    personId: -1, 
    personName: '', 
    location: '', 

    logOut: function() 
    { 
     if (window.confirm("Do you want log out?")) 
     { 
     this.set('loggedIn', false); 
     this.set('personId', -1); 
     this.set('personName', ''); 
     this.set('location', ''); 
     this.send('goToLogin'); 
     } 
    } 
    } 
); 

在我的模板,我得到這樣的結果:

...這是一個數字:function(){return this.get('controllers.app.personId'); } ...

我的模板,因爲這也很簡單:

... 
This is a number: *{{aNumber}}* 

{{debug}} 
{{log aNumber}} 
... 

模板中的調試語句都出現了我這個在Firebug控制檯:

... 
Transitioned into 'app.colleagues' 
function() 
... 

那麼,就像這個函數被直接回應,而不是「解釋」。事實上,我在更多的控制器中遇到了這樣的問題,但其他人(他們很多,比如8或10個控制器)工作的很好。你對這個問題有什麼想法嗎?是我的錯誤,還是Ember問題?

非常感謝!我希望你能幫助我。

+0

做你的其他控制器也返回像一個負值'-1' – intuitivepixel

+0

對不起@intuitivepixel但我不明白你的問題......如果你指的'personId'正確的價值是,它在我的其他控制器中以正確的方式返回。對不起,我的誤解 –

回答

2

你忘記了功能後.property。 Ember需要這個函數來表示函數是一個計算屬性。

aNumber: function() { 
    return this.get('controllers.app.personId'); 
}.property('app.personId') 
+0

非常感謝你的回答@DarshanSawardekar!有效。事情是......爲什麼有時我需要指定「屬性」句子,有時不需要?我想這取決於你在你的函數裏面使用什麼。不是嗎?再次感謝您 –

+1

歡迎您。 :)你綁定的任何東西必須是一個屬性,或者是一個真實的屬性,或者是通過函數獲得的計算屬性。 –

相關問題