2015-08-25 75 views
0

我对这项技术很陌生,并且询问了许多人面临的共同问题。我正在更新数据库的日期,并在点击按钮上显示“已成功发布”等消息,但我希望日期也能在屏幕上更新。我尝试添加刷新代码,但是然后发布的消息不显示,但页面被刷新并显示更新的日期。我无法在单个按钮单击中执行这两个操作。 简而言之,我想在点击按钮时自动刷新页面,并用消息显示更新后的数据。Angularjs-上传和更新页面按钮上的数据点击

HTML代码:

<div class="row" ng-controller="PublishManifestCtrl"> 
<div class="col-xs-12 col-md-12"> 
    <div class="widget"> 
     <div class="widget-header bordered-bottom bordered-themeprimary"> 
      <i class="widget-icon fa fa-tasks themeprimary"></i> 
      <span class="widget-caption themeprimary">Manifest Status</span> 
     </div> 
     <div class="widget-body"> 
      <form class="form-bordered" role="form"> 
       <div class="form-group"> 
        <label style="padding-left: 8px;">Manifest was last published to agents on <b>{{manifeststatus.manifestLastPublishedDate}}</b>.</label> 
       </div> 
       <div class="form-group"> 
        <label style="padding-left: 8px;">Manifest was last updated by <b> {{manifeststatus.lastUpdatedByUser}} </b> on <b>{{manifeststatus.manifestLastedUpdatedDate}}</b>.</label> 
       </div> 
       <div class="form-group"> 
        <div class="col-sm-offset-1"> 
         <button id="PublishButton" class="btn btn-default shiny " ng-disabled="manifeststatus.enablePublishButton" ng-click="Save()">Publish</button> 
        </div> 
        <br/> 
        <div id="statusDivPublish" ng-show="showstatus"> 
         <alert type="{{alert.type}}">{{alert.msg}}</alert> 
        </div> 
       </div> 
      </form> 
     </div> 

JS代码:

app.controller('PublishManifestCtrl', function ($scope, $rootScope, $http) { 

$scope.showstatus = false; 

$http({ 
    url: $rootScope.WebApiURL + '/getmanifeststatus', 
    method:get(), 
    params: { 'foobar': new Date().getTime() } 
}). 
success(function (data, status, headers, config) { 
    var options = { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric" }; 

    data.manifestLastedUpdatedDate = (new Date(data.lastUpdatedDateTime)).toLocaleDateString('en-US', options); 
    data.manifestLastPublishedDate = (new Date(data.lastPublishDateTime)).toLocaleDateString('en-US', options); 
    var date1 = new Date(data.lastUpdatedDateTime); 
    var date2 = new Date(data.lastPublishDateTime); 
    data.enablePublishButton = date2.getTime() > date1.getTime(); 

    $scope.manifeststatus = data; 
}). 
error(function (data, status, headers, config) { 
    alert('error' + status); 
    // log error 
}); 
$scope.Save = function (data) { 
    debugger; 
    $http.post($rootScope.WebApiURL + '/updatemanifeststatus'); 

    $scope.showstatus = true; 
    $scope.alert = { type: 'success', msg: 'Published Successfully.' }; 
    $(".statusDivPublish").show(); 
    $(".statusDivPublish").remove(); 

)}); 

刷新我尝试使用下面的代码之后

$scope.Save = function (data) { 
    debugger; 
    $http.post($rootScope.WebApiURL + '/updatemanifeststatus'); 


//refresh 
    $state.transitionTo($state.current, $stateParams, { 
     reload: true, 
     inherit: false, 
     notify: true 
    }); 

,然后其他的事情。但我不确定,我错了。

+0

您不在邮件中发送任何数据。为什么你有一个没有用户输入字段的表单?你究竟想要保存什么? – charlietfl

回答

0

首先,您应该使用ngClick对同一个点击事件执行一个或多个操作。例如:

<button ng-click="function();otherFunction()"> 

然后,显示数据的元素上最新使用ngModel,通过你的Ajax调用刷新可以留下来。例如:

标记:

<p>{{ yourDate }}</p> 

JS:

//.... Begin of your Ajax function 

$scope.yourDate = data.yourNewDate; 

//.... 

你的元素含量会刷新无刷新浏览器。