代码看起来很简单,但在我阅读the docs for $location时,我注意到有很多我不明白的复杂性。我的设置如下:
// in app.js
$routeProvider.when('/done' , {templateUrl: 'partials/done.html', controller: 'DoneController'});
// in my controller where $location is injected, on a button press...
if (!$scope.errors.length) {
$scope.model.save().then(function() {
alert("did I get here?");
$location.path('/done');
});
}
我按下按钮查看提醒,但视野无变化。我再次按下按钮(第二次将数据保存到云端),我第二次看到警报,视图确实发生了变化。有什么想法吗?提前谢谢。
答案 0 :(得分:4)
我相信你的序列中必定存在异步。 它通常在使用像jQuery这样的外部库时发生。
问题是,外部库事件不会触发角度$watch -> $digest -> $apply
周期。所以这个改变已经完成,但没有被angularjs传播。
使用$scope.$apply()
将解决您的问题
if (!$scope.errors.length) {
$scope.model.save().then(function() {
alert("did I get here?");
$scope.$apply(function(){
$location.path('/done');
});
});
}
答案 1 :(得分:-1)
我不知道为什么?但这可能是你的html问题。如果你的html像这样:
<a href="#" class="btn" ng-click="myFunction()">submit here</a>
然后执行href=""
意味着代码应该是这样的:
<a href="" class="btn" ng-click="myFunction()">submit here</a>