2

AngularJS で、新しい項目を配列に追加しようとしています。アイテムは正しく追加されますが、表示には変更が反映されません。

新しいタスクを追加:

 $scope.addNewTask = function() 
 {  
    console.log( "Before: " + $scope.tasks.length );

    $scope.newTask = [
        {
            id:     '3',
            title:  'Get answer'
        }
    ];

    $scope.tasks.push( $scope.newTask[0] );

    console.log( "After: " + $scope.tasks.length ); // one more than before
};

タスク配列:

$scope.tasks = [
    {
        id:     '1',
        title:  'Run into problem'
    },
    {
        id:     '2',
        title:  'Ask question'
    }
];

意見:

<ul>
    <li ng-repeat="task in tasks>
        {{ task.id }} {{ task.title }}
    </li>
</ul>

新しいアイテムが追加されたことをコンソールで確認できますが、リストは変更を反映して更新されていません。

編集:違いがあるかどうかはわかりませんが、フォームの送信ボタンをクリックすると、次のように関数が呼び出されます。

<form class="newtask-form" ng-submit="addNewTask()">
    <input type="submit" name="submit" value="Add new task" />
</form>
4

2 に答える 2

1

フォームではなく、それ自体でng-clickを使用するようにしてください。inputng-submit

    <form class="newtask-form">
        <input type="submit" name="submit" 
               ng-click="addNewTask()" value="Add new task" />
    </form>

scope.$apply()それが違いを生むかどうかはわかりませんが、それが私が考えることができる唯一のことです(あなたがすでに行った呼び出しを除く.

于 2013-06-01T14:39:52.007 に答える