0

コントローラーに問題があります。私は ionic (angular) と js-data を使用しています。addItem()F5でページをリロードした場合にのみ、新しいアイテムを追加すると表示されます。

これが私のコードです:

.controller('FooCtrl', function($scope, $ionicPlatform, foo) {
    $ionicPlatform.ready(function() {
        foo.findAll().then(function (items) {
            $scope.items = items;
        });
    });

    $scope.item = {};
    $scope.addItem = function () {
        foo.create({ name: $scope.item.name });
    };
})

最初にブラウザ ウィンドウで F5 キーを押さずに新しい要素を表示するにはどうすればよいですか?

4

4 に答える 4

1

アイテムを作成し、データベースを更新しています。しかし、あなたは更新していません$scope.items。アイテムをプッシュする$scope.itemsか、作成直後にこのコードを呼び出すことができます。$scope.items を更新します

foo.findAll().then(function (items) {
                $scope.items = items;
            });

このコードを使用してください:

.controller('FooCtrl', function($scope, $ionicPlatform, foo) {
    $ionicPlatform.ready(function() {
        foo.findAll().then(function (items) {
            $scope.items = items;
        });
    });

    $scope.item = {};
    $scope.addItem = function () {
        foo.create({ name: $scope.item.name });
        $scope.items.push({ name: $scope.item.name });
    };
})

また

.controller('FooCtrl', function($scope, $ionicPlatform, foo) {
    $ionicPlatform.ready(function() {
        foo.findAll().then(function (items) {
            $scope.items = items;
        });
    });

    $scope.item = {};
    $scope.addItem = function () {
        foo.create({ name: $scope.item.name });
           foo.findAll().then(function (items) {
                $scope.items = items;
            });
    };
})
于 2015-04-22T19:13:14.113 に答える
0

作成したアイテムをコントローラーのどこにも保存していません。foo.create がアイテムを返すと思いますが、正しいですか? その場合、おそらく次のようなものが機能する可能性があります。

$scope.addItem = function () {
    var item = foo.create({name: $scope.item.name});
    // this assumes that $scope.items is an array
    $scope.items.push(item);
};
于 2015-04-22T19:15:29.480 に答える
-1

これで問題が解決する場合があります。

 foo.findAll().then(function (items) {
            $scope.items = items;
            $scope.$apply();
        });
于 2015-04-22T19:12:13.120 に答える