【问题标题】:Page reload using angularJs使用 angularJs 重新加载页面
【发布时间】:2013-07-07 23:59:33
【问题描述】:

我是angularJS 的新手。我已经开始学习 CRUD 操作。我遇到了一个问题,当我delete 一个条目时,页面应该reload

我也经历过$location$route。并实现如下:

config

app.config( function ( $locationProvider, $routeProvider ) {
  $locationProvider.html5Mode(true);
    $locationProvider.hashPrefix = '!';

    $routeProvider.when('/', {
        templateUrl: '/views/index.html',
        controller: 'MainCtrl'
    });
    $routeProvider.when('/this',{
        templateUrl: '/views/about.html',
        controller: 'MainCtrl'
    }); 
});

当行动成功时,我会写成:

$location.path('/this');

但是当我这样做时,urlhttp://localhost/someapp 更改为http://this,但页面不会刷新。在这种情况下我该怎么办,请帮助我吗?

Edit

这是我的deletion code

$scope.deletecode = function (id) {
    name = '';
    if (confirm("are you sure to Delete the name")) {
        $http({
            method: 'POST',
            url: 'rohit.php',
            data: {
                "name": name,
                "id": id,
                "delete": "true"
            },
        }).
        success(function (data, status, headers, config) {
            alert("data deleted successfully");
            $location.path('/this');
        }).
        error(function (data, status, headers, config) {
            alert("Unable to load data.");
        });
    } else {
        alert("Data deletion cancelled by user ... ");
    }
};

在初始化时,我从 php 文件中获取数据:

$http({
    method: 'GET',
    url: 'test.php'
}).
success(function (data, status, headers, config) {
    $scope.samples = data;
}).
error(function (data, status, headers, config) {
    alert("Unable to load data.");
});

所有数据都存储在$scope.samples 中,它返回两个东西user_idname

【问题讨论】:

  • 我不确定您是否真的要刷新页面。如果操作正确,删除项目将更新视图,而无需刷新页面。
  • 视图没有更新,如何更新视图,我正在发布我的删除功能
  • 你不能用location.reload();吗?简单的javascript方法
  • 如果您绝对必须重新加载,只需像@Satpal 建议的那样使用location.reload()。刷新页面后,您的 Angular 无论如何都会完全重新初始化。
  • 感谢 Satpal 和 xbonez,+1 支持

标签: javascript angularjs rest xmlhttprequest angularjs-routing


【解决方案1】:

您的 http 请求正在从您的服务器中删除该项目,但您没有从您的客户端代码中删除它,这就是您的视图没有更新的原因。一旦从服务器中删除,您也想从客户端代码中删除它:

// all items in an array
$scope.items = [item1, item2];
// delete an item
$scope.deletecode = function (id) {
    name = '';
    if (confirm("are you sure to Delete the name")) {
        $http({
            method: 'POST',
            url: 'rohit.php',
            data: {
                "name": name,
                "id": id,
                "delete": "true"
            },
        }).
        success(function (data, status, headers, config) {
            alert("data deleted successfully");
            // at this point, the item has been deleted from your server
            // remove it from $scope.items as well
            // removes 1 item at index idx
            $scope.items.splice(idx, 1);
        }).
        error(function (data, status, headers, config) {
            alert("Unable to load data.");
        });
    } else {
        alert("Data deletion cancelled by user ... ");
    }
};

【讨论】:

  • 嘿,什么是 idx,在我的情况下是 id 吗?
  • idx 是您要删除的数组中项目的索引。您将需要跟踪它。因此,如果您要删除第一项,idx = 0。如果您要删除最后一个元素,idx = $scope.items.length - 1
  • 我从 php 文件中获取数据并存储到 $scope.samples = data。它给出了 user_id 和名称,删除后我正在做 $scope.samples.splice(user_id, 1)。这有什么问题?
  • user_id 不是索引。例如,如果数组中的第一个元素是user_id=1337 的用户,则索引仍为0。如果没有索引,则循环遍历数组并搜索索引。
  • 我必须在拼接后添加$scope.$apply(); 才能使其工作。
猜你喜欢
  • 2014-03-20
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 2016-03-13
  • 2015-12-17
  • 2014-06-16
  • 2016-11-03
相关资源
最近更新 更多