Angularjs 角度模板未更新内部视图,但$scope已更新

Angularjs 角度模板未更新内部视图,但$scope已更新,angularjs,Angularjs,当这是我的主html文件时: <html ng-app="app"> ... <body ng-controller="MainCtrl"> {{myData}} <button ng-click="update()">Update</button> <ng-view><ng-view> </body> 我在视图中看到我的按钮,在控制台中没有错误。当我点击它时,我在控制台中看到“upd”,但在页面内部它并没有更

当这是我的主html文件时:

<html ng-app="app">
...
<body ng-controller="MainCtrl">
{{myData}}
<button ng-click="update()">Update</button>
<ng-view><ng-view>
</body>
我在视图中看到我的按钮,在控制台中没有错误。当我点击它时,我在控制台中看到“upd”,但在页面内部它并没有更新。当我写这篇文章时:

$scope.update = function () {
  $scope.$apply(function(){
    $scope.myData = 'upd';
  })
}

我有一个错误“正在进行”。如何解决此问题?

问题是您正在加载两次MainCtrl。当('/',{templateUrl:'tpl.HTML',controller:'MainCtrl'})时,您应该像在
或routes
中一样在HTML中放置一次。选择一个

实际上,你的代码有点奇怪。您在主HTML和视图中编写了两次
?你应该只有一个,像这样:

HTML:


您的tpl.html将在
中,因此,您无需重复此代码。

谢谢。我写它是为了调试我的应用程序。视图外部的按钮是updatemy{{myData},但视图内部的按钮只是update$scope,而不是update{{myData},可能是因为,正如我所说,您调用了MainCtrl两次。然后,在内部重置$scope。你应该在途中或途中叫它一次。
var app = angular.module('app', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
    .when('/', { templateUrl: 'tpl.html', controller: 'MainCtrl' })
}]);

app.controller('MainCtrl', ['$scope', function () {
    $scope.update = function () {
        $scope.myData = 'upd';
console.log($scope.myData)
}
}]);
$scope.update = function () {
  $scope.$apply(function(){
    $scope.myData = 'upd';
  })
}
<html ng-app="app">
...
<body>
    <div ng-view></div>
</body>
{{myData}}
<button ng-click="update()">Update</button>
var app = angular.module('app', ['ngRoute']).config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/', { templateUrl: 'tpl.html', controller: 'MainCtrl' })
}]);

app.controller('MainCtrl', ['$scope', function () {
    $scope.update = function () {
        $scope.myData = 'upd';
    }
}]);