我的控制器出了问题。我使用离子(角度)和js数据。当我通过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看新元素是否需要做什么?
答案 0 :(得分: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;
});
};
})
答案 1 :(得分: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);
};
答案 2 :(得分:0)
如果你正在使用js-data-angular,那么你也可以这样做:
.controller('FooCtrl', function($scope, $ionicPlatform, foo) {
$ionicPlatform.ready(function() {
// retrieve that initial list of items
foo.findAll();
// $scope.items will be kept up-to-date with
// the foo items in the store
foo.bindAll(null, $scope, 'items');
});
$scope.item = {};
$scope.addItem = function () {
// thanks to the bindAll above, the
// created item will be rendered
// automatically
foo.create({ name: $scope.item.name });
};
})
答案 3 :(得分:-1)
这可能会解决问题:
\n