Javascript 部分模板中的AngularJS双向绑定&;重蹈覆辙

Javascript 部分模板中的AngularJS双向绑定&;重蹈覆辙,javascript,angularjs,ngroute,Javascript,Angularjs,Ngroute,我在我的ng视图之外加载了一个部分模板,它有自己的控制器。看起来像这样 基本模板 <html ng-app="myApp"> ... <div ng-include src="'myPartial.html'"></div> ... <div ng-view></div> ... <!-- script files go here --> <script src="angula

我在我的
ng视图
之外加载了一个部分模板,它有自己的控制器。看起来像这样

基本模板

<html ng-app="myApp">
   ...
   <div ng-include src="'myPartial.html'"></div>
   ...
   <div ng-view></div>
   ...
   <!-- script files go here -->
   <script src="angular.js"></script>
   <script src="angular-route.js"></script>
   <script src="myPartialController.js"></script>
   <script src="myApp.js"></script>
</html>
部分模板(
myPartial.html

现在,当加载分部时,它只显示一个空数组(
[]
)。刷新页面时,将显示正确的数组


实际上,双向绑定不起作用。我遗漏了什么?

假设
myVariable
在异步/回调函数之后获取值,并且在该点上它确实具有预期值,Angular在到达下一个范围摘要周期之前不会意识到更改

但是,您可以通过执行
$scope.$apply()
或将赋值行包装在
$timeout
回调中来强制执行


看看我在这个简单的例子中的意思:

角度模块('a',[]) .controller('Ctrl',函数($scope){ $scope.valA=$scope.valB='尚未设置'; setTimeout(函数(){//模拟异步调用 $scope.valA=‘第一套’; $scope.$apply(); $scope.valB='second one set';//这个将等待另一个周期 }, 500) });

{{valA}}

{{valB}}

警队摘要
如果看不到任何代码就很难判断,可能您的信息没有在正确的时间保存到sessionStorage中。在你刷新或其他事情后出现…@这也是我最初的怀疑。然而,双向绑定不是应该在模板上的变量发生变化时更新它吗?你能告诉我你在哪里加载你的JS吗?另外,呈现DOM时,myVariable值是什么?为什么要使用
ng include src=“'myPartial.html'”
,然后还要定义主路径“/”来呈现此部分?同样的事情也适用于与分部关联的控制器。如图所示,您正在实例化两个控制器(可能还有两个HTML模板)。我遗漏了什么吗?我不得不编辑我的很多代码,我把它忘在了。我的错。它实际上是一个不同的URL。我试图删除
$routeProvider
中的控制器实例化,但这根本没有帮助或影响我的原始问题。好吧,所以
setTimeout()
似乎可以解决这个问题。我有一个相关的小问题,希望你不介意帮我解决。我在用户登录后立即执行此操作,
myValue
的值对于每个用户都是不同的。现在的问题是,当用户a登录并注销,然后用户B登录时,我仍然看到用户a的
myValue
;我只能在页面上看到用户B的
myValue
。这是一个相关的问题吗?对我来说听起来是一样的。当你在每次登录/注销呼叫上强制一个摘要循环时会发生什么?嗯,没有看到整个事情,我帮不了你多少。但是,我可以建议您尝试添加一个按钮来强制执行摘要(一个空白的
ng click
属性将起作用),这样您就可以随时执行。这将帮助您确定问题是与范围有关还是与其他问题有关(如会话存储)。请参阅我更新的示例。
var app = angular.module('myApp', ['myPartialController', 'ngRoute']);
app.config(function($routeProvider) {
    .when('/myUrl', {
            templateUrl: 'myPartial.html',
            controller:'myPartialController',
            reloadOnSearch: true
        })
});
<div class="container-fluid" ng-controller="myPartialController">
    {{myVariable}}
</div>
angular.module('myPartialController', [])

.controller('myPartialController', ['$scope', '$rootScope', '$window', function($scope, $rootScope, $window) {
    // some parsing, data manipulation, what have you's
    // and finally set the result array to myVariable.
    $scope.myVariable = myVariable;
}]);