我在ng-click上调用了两个函数。但它不起作用。我不确定为什么在我通过调试器交叉检查时没有调用Refresh1()。
SessionID
JSFILE
HTML CODE
<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(manifeststatus);Refresh1()">Publish</button>**
</div>
<br/>
<div id="statusDivPublish" ng-show="showstatus">
<alert type="{{alert.type}}">{{alert.msg}}</alert>
</div>
</div>
</form>
</div>
新代码
$scope.Save = function (data) {
debugger;
$http.post($rootScope.WebApiURL + '/updatemanifeststatus');
//$http.get({ url: $rootScope.WebApiURL + '/getmanifeststatus' });
$scope.manifeststatus = data;
$scope.showstatus = true;
$scope.alert = { type: 'success', msg: 'Published Successfully.' };
$(".statusDivPublish").show();
}
$scope.Refresh1 = function () {
//refresh
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
}
});
第一个更新并显示成功的消息,而第二个功能刷新页面。
答案 0 :(得分:1)
使用它
$scope.Save = function (data) {
debugger;
$http.post($rootScope.WebApiURL + '/updatemanifeststatus');
//$http.get({ url: $rootScope.WebApiURL + '/getmanifeststatus' });
$scope.manifeststatus = data;
$scope.showstatus = true;
$scope.alert = { type: 'success', msg: 'Published Successfully.' };
$(".statusDivPublish").show();
$scope.refresh();
}
在第一个函数中调用refresh并将其从ng-click中删除。
更新
你有一个不同类型的问题我也有。你尝试刷新方法中的状态,我很难用这个片段来解决这个问题
if($state.current.name == /*name of the current state*/) {
$state.go($state.current, {}, {reload: true});
$modalInstance.close();
}
else {
$modalInstance.close();
$state.go(/*name of the current state*/);
}
它并不难,但它并没有表现得像你理解它。
UPDATE
拿你的代码
$scope.Refresh1 = function () {
//refresh
$state.go($state.current, {}, {reload: true});
}
答案 1 :(得分:0)
不要在一个ng-click
中执行两个功能,而是将Refresh1
来电添加到Save
来电的结尾,就像这样。
<强> HTML 强>
<button id="PublishButton"
class="btn btn-default shiny "
ng-disabled="manifeststatus.enablePublishButton"
ng-click="Save(manifeststatus)">Publish</button>
<强> JS 强>
$scope.Save = function (data) {
debugger;
$http.post($rootScope.WebApiURL + '/updatemanifeststatus');
//$http.get({ url: $rootScope.WebApiURL + '/getmanifeststatus' });
$scope.manifeststatus = data;
$scope.showstatus = true;
$scope.alert = { type: 'success', msg: 'Published Successfully.' };
$(".statusDivPublish").show();
$scope.refresh();
}
<强>更新强>
如果您使用AngularJS V1.2.2
或更高版本,然后使用ui-router
,则以下内容应该可以重新加载数据。
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
实现这一目标的最短途径是:
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams
还值得注意的是,这些都不会实际重新加载页面。如果要重新加载状态和页面,则没有ui-router
方法。做window.location.reload(true)
更新2
如果您收到:
$ Scope未在Scope中定义。$ scope.Refresh1 (publishmanifest.js:44)在Scope。$ scope.Save(publishmanifest.js:37) at $ parseFunctionCall(angular.js:12345)at angular-touch.js:472 at 范围。$ eval(angular.js:14401)在Scope。$ apply(angular.js:14500)at at HTMLButtonElement。 (angular-touch.js:471)at HTMLButtonElement.n.event.dispatch(jquery.min.js:3)at HTMLButtonElement.r.handle(jquery.min.js:3)
您没有在$state
中注入controller
服务。您必须这样做才能使用它。
//without annotation (inferred, not safe when minifying code)
function Controller($scope, $state) {...}
//inline annotation
module.controller('Controller', ['$scope','$state', function($scope, $state) {...}]);
//$inject property annotation
function Controller($scope, $state) {...}
Controller.$inject = ['$scope', '$state'];
选择上述方法之一来设置控制器以使用$state
。
答案 2 :(得分:0)
如何在$http
处理程序中调用save中的刷新?
像这样:
$http.post($rootScope.WebApiURL + '/updatemanifeststatus')
.then(function(){
$scope.Refresh1();
});
答案 3 :(得分:-1)
只需制作第三个功能:
function3(data) {
save(data);
refresh1();
}