2015-06-09 85 views
2

這裏我做了什麼:
我有控制器稱爲「員工」和組件「部門」。如何在Ember js

從控制器我想調用組件的功能我該怎麼辦?

控制器: 「僱員」 ::

if (this.get("callMoveleft")) { 
    this.set("callMoveleft", false); 
    }  


else { 
     this.set("callMoveleft", true); 
     } 

組件: 「部門」 ::

callMoveLeft: function() { 
     console.log('Move left will be called'); 
    }.observes("callMoveleft"), 

部的功能是沒有得到調用。請建議我在哪裏做錯了?

+0

並不真正有很多工作要做,是同步的。爲什麼你沒有控制器上的'callMoveLeft()'函數?除此之外,這裏有一些鏈接可能有助於** 1 ** - http://www.samselikoff.com/blog/getting-ember-components-to-respond-to-actions/,** 2 ** - http ://guides.emberjs.com/v1.10.0/components/sending-actions-from-components-to-your-application/ – Craicerjack

+0

[如何從控制器調用組件的方法](http:// stackoverflow.com/questions/19618604/how-to-call-method-of-a-component-from-a-controller) – Craicerjack

+0

@Craicerjack我想調用部門組件中定義的函數,所以在調用callMoveLeft之後,而不是顯示控制檯,我會從那裏做功能調用。這也是我在Component中聲明函數的原因!請告訴我,如果我做錯了任何事情,因爲我是初學者。 – Developer

回答

2

您應該有一個表示組件狀態的模型。該模型將供控制器使用,以便它可以調用.moveLeft()

組件應該使用此模型的屬性來顯示它自己。一旦控制器更改模型的狀態,組件將自動更新。

UPD

演示:http://emberjs.jsbin.com/wizepi/1/edit?html,js,output

+1

你能詳細說明嗎?請給我一些代碼前。因爲我是新學習者,學習速度緩慢,或者你可以在我的代碼中添加寶貴的評論,如果我在這方面做了任何錯誤的話。 – Developer

+1

這是真的嗎?我可以舉一個例子。 –

+0

是的,對於其他可能訪問此問題的人來說,這會很好。 – Developer