2014-03-31 43 views
0

,我該如何停止輸入欄的編輯,以自動接受更改我有一個輸入可以主動編輯模型的名稱。 問題是,如果我開始鍵入輸入,則輸入接受更改。Ember.js - 如果我輸入

因此,編寫一個值爲「Something Else」的categoryName(屬性爲recordCategory)將是一件大事,因爲我需要在每次輸入字母后重新關注edit-recordCategory輸入。因此,如果我將注意力集中在輸入上,並且我會很快鍵入「Some」,它會在將我從輸入中排除出來之前接受'S',並根據它的當前值在列表中使用recordCategory,這隻會是「 S」。

下面是我的代碼更詳細的例子。

{{#each searchResults itemController="recordCategory"}} 
    <div id="hoveredRow" {{bind-attr class="isEditing:editing"}}> 
     {{#if isEditing}} 
      <div class="input-standard"> 
      {{edit-recordCategory value=categoryName focus-out="acceptChanges" 
      insert-newline="acceptChanges"}} 
      </div> 
     {{else}} 
     {{categoryName}} 
     {{/if}} 
    </div> 
{{/each}} 

這是我的控制器

isEditing: false, 
    actions: { 
    editrecordCategory: function(recordCategory){ 
     this.set('isEditing', true); 
     console.log(this.get('isEditing is toggling')) 
    }, 
    acceptChanges: function() { 
     this.set('isEditing', false); 
     if (Ember.isEmpty(this.get('model.categoryName'))) { 
     this.send('removerecordCategory'); 
     } else { 
     this.get('model').save(); 
     } 
     console.log(this.get('isEditing')) 
    }, 
    } 

,然後認爲定義edit-recordCategory

VpcYeoman.EditRecordCategoryView = Ember.TextField.extend({ 
    didInsertElement: function() { 
    this.$().focus(); 
    } 
}); 

Ember.Handlebars.helper('edit-recordCategory', VpcYeoman.EditRecordCategoryView); 

編輯:

實施GJK版的 '在acceptChanges' 行動後。我收到了同樣的問題。

TEST 1

我註釋掉在acceptChanges作用以及兩者的它引用在{{edit-recordCategory value=categoryName focus-out="acceptChanges" insert-newline="acceptChanges"}}使得它只是{{edit-recordCategory value=categoryName}}同樣的問題仍在發生。這導致我相信問題不像acceptChanges寫的那樣。

有一個地步,我原來的「在acceptChanges」行動及其使用

{{edit-recordCategory value=categoryName focus-out="acceptChanges" 
      insert-newline="acceptChanges"}} 

完美。

TEST 2

在取出 '在acceptChanges' 的任何參考頂部,我除去{{的#if編輯}}有條件的。該

{{edit-recordCategory value=categoryName focus-out="acceptChanges" 
      insert-newline="acceptChanges"}} 

沒有在打字(如其中不存在燼有條件的預期,但{{edit-recordCategory}}仍然當我輸入自動提交消失。還應當指出的是,recordCategories種類本身這個名單,所以在接受了編輯,我專注出來{{edit-recordCategory}}和本身基於它的對象Resorts的新類別名稱值

發現問題!但它打破了我的過濾器吧。

一旦我註釋掉這個函數

searchResults: function() { 
    var searchTerm = this.get('searchTerm'); 
    var regExp = new RegExp(searchTerm,'i'); 

    // We use `this.filter` because the contents of `this` is an array of objects 
    var filteredResults = this.filter(function(category) { 
     return regExp.test(category.get('categoryName')); 
    }); 

    return filteredResults; 
}.property('@each.categoryName', 'searchTerm'), 

並且將'searchResults'中的{{#each searchResults itemController="recordCategory"}}中的編輯工作順利進行,但現在我的搜索欄過濾器無法正常工作。

+0

爲什麼我低調? –

回答

1

您的categoryName屬性在您的模型上,這意味着您可以在控制器中覆蓋它。您需要在控制器上使用臨時屬性來解決您的問題。

recordCategory: '', 

actions: { 
    acceptChanges: function() { 
     var recordCategory = this.get('recordCategory'); 
     this.set('model.recordCategory', recordCategory); 
    } 
} 
+0

我仍然有同樣的問題,但我不認爲這是因爲您的解決方案無效。在看到同樣的問題後,我在{{edit-recordCategory value = categoryName focus-out =「acceptChanges」 insert-newline =「acceptChanges」}}中將acceptChanges操作及其引用註釋掉了,只是{{edit- recordCategory value = categoryName}}。同樣的問題仍在發生。我會更新這個問題。 –

+1

只是爲了澄清,你的問題是,模型上的'categoryName'屬性在你鍵入時更新,而不是在你調用'acceptChanges'時更新,更正? – GJK

+0

是的。它會自動提交我按下的每個鍵的categoryName。因此,編寫一個值爲「Something Else」的categoryName將會是一件大事,因爲我需要在每次輸入字母后重新關注edit-recordCategory輸入。因此,如果我將注意力集中在輸入上,並且我會很快鍵入「Some」,它會在將我從輸入中排除出來之前接受'S',並根據它的當前值在列表中使用recordCategory,這隻會是「 S」。 –

相關問題