gpt4 book ai didi

javascript - 部分模板中的 AngularJS 2 向绑定(bind)和刷新问题

转载 作者:行者123 更新时间:2023-11-30 16:58:36 24 4
gpt4 key购买 nike

我在 ng-view 之外加载了一个部分模板,它有自己的 Controller 。看起来像这样。

基本模板

<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>

主应用脚本(myApp.js)

var app = angular.module('myApp', ['myPartialController', 'ngRoute']);
app.config(function($routeProvider) {
.when('/myUrl', {
templateUrl: 'myPartial.html',
controller:'myPartialController',
reloadOnSearch: true
})
});

部分模板(myPartial.html)

<div class="container-fluid" ng-controller="myPartialController">
{{myVariable}}
</div>

现在,在 Controller 内部,我从 sessionStorage 中读取一个值,进行一系列解析、数据操作等,最后将结果设置为 $scope 数组变量。

部分 Controller (myPartialController.js)

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;
}]);

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

基本上,双向绑定(bind)不起作用。我错过了什么?

最佳答案

假设 myVariable 在异步/回调函数之后获取值,并且此时它确实具有预期值,Angular 在到达下一个作用域摘要周期之前不会意识到更改。

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


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

angular.module('a', [])
.controller('Ctrl', function($scope) {

$scope.valA = $scope.valB = 'not set yet';

setTimeout(function() { // simulated async call
$scope.valA = 'first one set';
$scope.$apply();
$scope.valB = 'second one set'; // this one will wait another cycle
}, 500)
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="a" ng-controller="Ctrl">
<p>{{valA}}</p>
<p>{{valB}}</p>
<p><button ng-click="">Force Digest</button>
</div>

关于javascript - 部分模板中的 AngularJS 2 向绑定(bind)和刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com