2016-08-19 4 views
1

私のページに動的なリストを作成したい。ユーザーがフォームからリストに項目を追加できる場所。このような何か:入力フォームでオブジェクトの配列をhtmlリストに追加するにはどうしたらいいですか?

w3school example

が、私はより多くの入力を追加し、角度の関数に1つのオブジェクトを送信します。このような何か:

<!DOCTYPE html> 
<html> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css"> 
<body> 

<script> 
var app = angular.module("myShoppingList", []); 
app.controller("myCtrl", function($scope) { 
    $scope.products = [{food: "Milk", price: "1$"}, {food : "Bread", price: "1$"}, {food : "Cheese", price: "1$"}]; 
    $scope.addItem = function() { 
     $scope.errortext = ""; 
     if (!$scope.addMe) {return;} 
     if ($scope.products.indexOf($scope.addMe) == -1) { 
      $scope.products.push($scope.addMe); 
     } else { 
      $scope.errortext = "The item is already in your shopping list."; 
     } 
    } 
    $scope.removeItem = function (x) { 
     $scope.errortext = ""; 
     $scope.products.splice(x, 1); 
    } 
}); 
</script> 

<div ng-app="myShoppingList" ng-cloak ng-controller="myCtrl" class="w3-card-2 w3-margin" style="max-width:400px;"> 
    <header class="w3-container w3-light-grey w3-padding-16"> 
    <h3>My Shopping List</h3> 
    </header> 

    <ul class="w3-ul"> 
    <li ng-repeat="x in products" class="w3-padding-16">{{x.food}} : {{x.price}}<span ng-click="removeItem($index)" style="cursor:pointer;" class="w3-right w3-margin-right">×</span></li> 
    </ul> 

    <div class="w3-container w3-light-grey w3-padding-16"> 
    <div class="w3-row w3-margin-top"> 
     <div class="w3-col s10"> 
     <input placeholder="Add shopping items here" ng-model="addMe.food" class="w3-input w3-border w3-padding"> 
     <input placeholder="Add shopping items here" ng-model="addMe.price" class="w3-input w3-border w3-padding"> 
     </div> 
     <div class="w3-col s2"> 
     <button ng-click="addItem()" class="w3-btn w3-padding w3-green">Add</button> 
     </div> 
    </div> 
    <p class="w3-padding-left w3-text-red">{{errortext}}</p> 
    </div> 
</div> 

</body> 
</html> 

が、私は私のリストに新しい項目を追加して、私はあまりにも私のリストに値を変更するテキストボックスに変更値を開始した場合。ポインタのようなものがあります。私は文字列の配列を送信しない場合はそれを行うが、私は1つの文字列に接続したくない。今私は1つの文字列に接続しているが、私はそれを望んでいない。

すべての回答ありがとうございます。

+0

angular.copy()を使用してコピーを作成し、そのコピーしたオブジェクトを配列 – Developer

+0

にプッシュすることができますか?このようなことを意味するユーザクリックの例を挙げてください。 – Cullub

+0

テキストボックスの入力に何かを書いてボタンをクリックすると、テキストボックスからテキストを含む新しいアイテムのリストが表示されます。私はここに例えばリンクを置く。 –

答えて

0

angular.copy()を使用してコピーを作成し、そのコピーしたオブジェクトを配列にプッシュします。

0

は、モデルが更新される方法を制御するngModelOptionsを見てください:JavaScriptのイベントは、更新をトリガするものとの周りの

<input placeholder="Add shopping items here" 
ng-model="addMe.price" 
ng-model-options="{ updateOn: 'blur' }" 
class="w3-input w3-border w3-padding"> 

だけの混乱: https://docs.angularjs.org/api/ng/directive/ngModelOptions

これを試してみてください。

+0

ありがとうございました。私はそれを試してみましょうが、現在、テキストボックスを入力するときにリストが変更されていないが、ボタンを押したとき。私は見てみるhttps://docs.angularjs.org/api/ng/directive/ngModelOptions。 –

関連する問題