我有一個顯示視圖,顯示列表中的所選項目。然後,當我點擊編輯按鈕時,它顯示編輯視圖通過{{#if isEditing}}ember.js從另一個視圖更改視圖
當我單擊列表中的另一個項目時,顯示視圖更改爲新的選定項目,但仍處於isEditing狀態。
如何從另一個視圖更改視圖的isEditing狀態?
我已經使用FocusOut函數設置isEditing爲false,但在此視圖中有2個文本字段,因此當我點擊其他文本字段時,它也會觸發focusOut函數。
這一定很簡單,但似乎無法弄清楚!
我有一個顯示視圖,顯示列表中的所選項目。然後,當我點擊編輯按鈕時,它顯示編輯視圖通過{{#if isEditing}}ember.js從另一個視圖更改視圖
當我單擊列表中的另一個項目時,顯示視圖更改爲新的選定項目,但仍處於isEditing狀態。
如何從另一個視圖更改視圖的isEditing狀態?
我已經使用FocusOut函數設置isEditing爲false,但在此視圖中有2個文本字段,因此當我點擊其他文本字段時,它也會觸發focusOut函數。
這一定很簡單,但似乎無法弄清楚!
不錯的問題。我認爲你需要做一些比簡單綁定更復雜的操作來驅動App.SelectedItemView
的內容。我想嘗試另一種計算的屬性,而不是:
App.SelectedItemView = Ember.View.extend({
isEditing: false,
content: function() {
var selectedItem = App.SelectedItemController.get('content');
this.set('editingItem', false);
return selectedItem;
}.property('App.SelectedItemController.content'),
});
有關計算性能的技巧是,你可以完成同樣的事情,簡單的約束力,但你也可以添加自定義代碼來執行時的觀測值的變化(如有條件在這種情況下將editingItem
設置爲null
)。計算屬性的不利之處在於,執行雙向綁定比較複雜(例如,在此情況下,在App.SelectedItemView.content
發生更改時設置App.SelectedItemController.content
) - 但聽起來您不需要這樣做。
您不希望兩個視圖在邏輯上直接相連 - 相反,您希望通過綁定來實現此關聯(可能不是這種情況,因爲編輯butotn似乎沒有綁定到模型或屬性?)還是通過控制器層中的函數?
原始問題也非常感興趣。對於大多數情況,通過綁定可能是正確的,但有時候您不想設置額外的Ember.Object或額外的屬性,只是將數據從一個視圖傳遞到另一個視圖。 因此,我認爲能夠從另一個視圖更改數據可能會有所幫助。 「通過控制器層」是什麼意思? – 2012-02-03 14:28:40
@jasonpgignac請你可以告訴我一個如何通過控制器層做到這一點的例子嗎?謝謝 – 2012-02-04 19:07:56
如何從另一個視圖更改視圖的isEditing狀態?
我不認爲這真的是你想要做的。在該項目的點擊事件中,您可能正在更改控制器的content
屬性。當content
更改時,您希望isEditing
爲假。
您可以設置一個觀察者來處理這個:
App.SelectedItemView = Ember.View.extend(
{
isEditing: false,
contentBinding: 'App.SelectedItemController.content',
contentChanged: function()
{
this.set('isEditing', false);
}.observes("content")
});
嗯,我已經結束了這樣做,但它不是漂亮,我敢肯定,這不是正確的方式! @get('parentView')。get('parentView')。get('childViews')[1] .set('isEditing',false) – 2012-02-02 23:55:52