【问题标题】:Need to refresh angular app on button click需要在按钮单击时刷新 Angular 应用程序
【发布时间】:2016-10-26 13:23:50
【问题描述】:

我开始创建一个单页应用程序,该应用程序从文本框中获取输入并显示到另一个页面。在第二页上,我想创建一个主页按钮,将我带到原始视图,同时将应用程序的输入框刷新为空白状态。

第一个视图

<input type="text" id="Bad" style="text-transform:uppercase"  ng-model="name" />

第二个视图

<h3>Hello</h3>
<span ng-bind="name"></span></br>
<a href="#" ng-click="reload()">
    <img src="Home_Icon.png" height="92" />
</a>

app .js 控制器

var myApp = angular.module('myApp', ['ngRoute']);

myApp.config(function ($routeProvider) {

    $routeProvider.when('/second', {
        templateUrl: 'pages/second.html',
        controller: 'secondController'
    });
});

控制器功能

myApp.controller('secondController', [
    '$scope', 
    '$log', 
    '$routeParams', 
    '$window', 
    'nameService', 
    function ($scope, $log, $routeParams,  nameService) {

        $scope.num = $routeParams.num || 1;
        $scope.name = nameService.name;
        $scope.$watch('name', function () {
            nameService.name = $scope.name;
        });

        $scope.reload = function () {
            location.reload();
        }
    }]
);

我试过How to reload a page using Angularjs?。也是。请帮忙!。谢谢

【问题讨论】:

  • 您是否只想在导航回原始视图时清除输入?
  • 基本是的。我想创建多个带有回家选项的页面
  • 您可以将默认值设置为角度,然后在按钮单击(ng-click)上使用 $scope.$apply() 将数据“刷新”回默认值
  • 使用 location.reload() 是一种非常糟糕的做法,因为它会重新加载您的所有服务、控制器和脚本。我建议您重新加载该特定状态,而不是重新加载位置本身。即,对于您的情况,最好使用 ui.routing 附带的 $stateProvider。

标签: javascript angularjs http


【解决方案1】:

在你的重载函数中使用它

$scope.name = '';
$scope.$apply();
window.location.replace('pages/first.html'); //your first page

【讨论】:

  • 是的,这不起作用。相反,它阻止了在第一页输入中输入的内容。是否可以获取绑定的信息并从另一个控制器重置它?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 2014-12-25
  • 2015-09-27
  • 2023-03-14
相关资源
最近更新 更多