2017-05-30 179 views
0

在我的Ionic應用程序中,我在formbutton內部有一個input字段。在button點擊一些動作應該發生在controllerinput字段內應該清除,但它確實發生了而不是。這看起來很容易,但我不明白它有什麼問題。請指教。 我讀hereherehere,沒有什麼幫助。 的HTML:Ionic + Angular:無法清除輸入字段

<form novalidate name="customCategoriesForm"> 
    <ion-list> 
    <ion-item> 
     <div class="item item-input item-stacked-label noBorder"> 
     <span class="input-label">Create a new category</span> 
     <div class="catRow"> 
     <input type="text" 
       id="newCategoryInput" 
       name="addNewCategory" 
       placeholder="Category name" 
       ng-model="addNewCategory" 
       ng-minlength="3" 
       required 
       > 
      <button ng-click="addCategory(addNewCategory)" 
        ng-disabled="!customCategoriesForm.addNewCategory.$valid" 
        class="button button-small button-outline button-positive catButton">Add</button> 
     </div> 
    </div> 
    </ion-item> 
    <ion-item> 
     ... 
    </ion-item> 
    </ion-list> 
</form> 

的JS:

$scope.addCategory = function (newCategory) { 
    $scope.ExistingCategoriesArray.push(newCategory); 
    $scope.addNewCategory = ""; 
} 

編輯:

似乎沒有錯誤,沒有任何反應..

+0

一些錯誤輸出? –

+0

不,沒有任何反應。 – undroid

+0

還沒有添加類別? –

回答

1

爲您解決問題的變化$scope.addNewCategory$scope.addNewCategory.value,就像這樣:

The .js:

$scope.addNewCategory = {value : ""}; // initialize a object addNewCategort with the property value = '' 

$scope.addCategory = function (newCategory) { 
    $scope.ExistingCategoriesArray.push(newCategory); 
    $scope.addNewCategory.value = ""; // clear the property value of addNewCategory 
} 

的HTML:

<form novalidate name="customCategoriesForm"> 
    <ion-list> 
    <ion-item> 
     <div class="item item-input item-stacked-label noBorder"> 
     <span class="input-label">Create a new category</span> 
     <div class="catRow"> 
     <input type="text" 
       id="newCategoryInput" 
       name="addNewCategory.value" <!-- Edit this line --> 
       placeholder="Category name" 
       ng-model="addNewCategory" 
       ng-minlength="3" 
       required 
       > 
      <button ng-click="addCategory(addNewCategory.value)" <!-- and this line --> 
        ng-disabled="!customCategoriesForm.addNewCategory.$valid" 
        class="button button-small button-outline button-positive catButton">Add</button> 
     </div> 
    </div> 
    </ion-item> 
    <ion-item> 
     ... 
    </ion-item> 
    </ion-list> 
</form> 

你總是需要使用ngModel點。閱讀this reference

+0

它的工作原理!你能用幾句話來詳細說明嗎?我從來沒有見過這種「ng-model」的用法。 – undroid

+1

基本上你不應該在雙向綁定中使用原始類型。始終使用一個對象。從[這個答案](https://stackoverflow.com/a/18128502/6835358):如果你雙向綁定到一個基元(比如你的案例中的一個布爾值),setter將它設置在當前範圍上而不是它定義的範圍,當你有一個很大的子範圍的大型用戶界面時會引起頭痛。另一個很好的解釋可以在[本視頻]中找到(https://egghead.io/教訓/ angularjs-的點)。 –