javascript - 无法更改 AngularJS 上的范围变量值
问题描述
我想编辑范围变量值,但我无法得到它。奇怪的是,如果我使用 console.log($scope) 而不是 $scope.subtotal 进行调试,那么我还可以通过 ng-inspector Google 扩展获得所有值。
十分感谢!
angular.module('myApp', [])
.controller('CartController', ['$scope', '$http', function ($scope, $http) {
function getSubtotalCart(){
$.getJSON('/getSubtotalCart', function (response, status, xhr) {
if (status == 'success') {
$scope.subtotal = "Hello"; //response;
$scope.$apply();
} else {
console.log(xhr);
}
});
}
$scope.getTotalCart = function(bool){
console.log('Running');
(bool) && getSubtotalCart();
console.log($scope);
console.log($scope.subtotal);
};
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container" ng-app="myApp" ng-controller="CartController" ng-init="getTotalCart(true)" ng-cloak></div>
解决方案
你$scope.getTotalCart
在里面打电话ng-init
。这使它成为它一被调用就会做的第一件事。事实上,它发生得太快了,/getSubcartTotal
甚至还没有返回值。这意味着它$scope.subtotal
仍然是未定义的。要解决这个问题,你当然可以给它一个初始值,或者你可以getTotalCart
通过将它放在响应回调中来延迟调用,或者,如果你正在使用uiRouter
,你应该能够使用“resolve”来只加载请求完成后的控制器。
推荐阅读
- continuous-integration - 有没有办法拆分我的测试并让它们在我的 lerna monorepo 中并行运行?
- c++ - 更新网格 VBO
- r - 如何编写一个函数,其中输入是数据帧的行,输出是另一个数据帧?
- python - 如何在 pandas 的组中找到共同值?
- token - 是否可以在 Slack 中仅使用新的机器人用户令牌来读取私人消息(im、mpim)?
- php - 使用 2 个不同查询的结果进行计算
- python - Python discord.py 删除与某个 id/message 的聊天
- powerbi - 如何使用以电子邮件地址为参数的单个存储过程在 PorwerBI 中基于登录的用户电子邮件地址从 SQL Server 中获取数据
- vba - 请求 VBA 函数
- android - 使用expo build隐藏android底部按钮反应原生