范围变量在模板中不可用

路易

我从角种子开始了一个项目。我将其与另一个具有jQuery的项目混合。我无法在模板中访问范围变量。

JS:

'use strict';

angular.module('myApp.view1', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl'
  });
}])

.controller('View1Ctrl', ['$scope', function ($scope) {

    $scope.showView = true;
    $scope.proBlock = false;
    $scope.modelBlock = false;

    $.when(dbReadyDeferred).then(function() {
        $scope.proBlock = true;
        console.log('dbReadyDeferred.state()',dbReadyDeferred.state());
    });
...

HTML:

<div ng-show="showView">
    {{proBlock}}
</div>

在浏览器中,它显示:false我的代码有问题吗?

谢谢

沙尚克·阿格劳瓦尔(Shashank Agrawal)

如果您确定$.when(dbReadyDeferred).then(function() {})正在调用您的函数,请按如下所示更改控制器代码:

.controller('View1Ctrl', ['$scope', '$timeout', function ($scope, $timeout) {

    $scope.showView = true;
    $scope.proBlock = false;
    $scope.modelBlock = false;

    $.when(dbReadyDeferred).then(function() {
        $timeout(function() {
             $scope.proBlock = true;
             console.log('dbReadyDeferred.state()',dbReadyDeferred.state());
        });
    });
}]);

因为,您正在$scope.proBlock使用jQuery更改值,所以Angular不会意识到这一更改,因此我们需要明确地告诉Angular运行摘要周期。

我们也可以使用$scope.$apply(),但是将调用包装到$timeout函数中是一种更干净的方法。

阅读更多:带有Ajax表单提交的AngularJS需要单击两次

更新:

您可以这样修改您的resolve变量:

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl'.
    resolve: {
         dbState: ['$rootScope', '$q', function($rootScope, $q) {
               var promise = $q.when(dbReadyDeferred)

               promise.then(function() {
                   $rootScope.$broadcast("dbStateReady");
               });
               return promise;
         }]
    }
  });
}])

.controller('View1Ctrl', ['$scope', function ($scope) {

    $scope.showView = true;
    $scope.proBlock = false;
    $scope.modelBlock = false;

    var deregisterFunction = $scope.$on("dbStateReady", function() {
        $scope.proBlock = true;
        console.log('dbReadyDeferred.state()',dbReadyDeferred.state());
        deregisterFunction();   // Remove this watch for $on listener
    });
});

基本上,我们将$q.when(如提到的@shushanthp)移至resolve并使用,$broadcast以了解何时可以使用db状态$on

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在此示例中变量范围不可用

来自分类Dev

在范围中途使变量不可用/不可访问

来自分类Dev

在范围中途使变量不可用/不可访问

来自分类Dev

为什么使用* ngIf时模板局部变量在模板中不可用?

来自分类Dev

变量在脚本标签中不可用

来自分类Dev

类主方法中'if'循环外的变量范围-不可用的问题

来自分类Dev

时间范围面板在Grafana中不可用

来自分类Dev

指定@changeset在eex模板中不可用

来自分类Dev

分配@categories在eex模板中不可用

来自分类Dev

Wordpress功能在模板中不可用

来自分类Dev

全局变量在函数中不可用?

来自分类Dev

通过环境传递的变量在脚本中不可用

来自分类Dev

Travis变量在node.js中不可用

来自分类Dev

通过环境传递的变量在脚本中不可用

来自分类Dev

全局声明的变量在javascript函数中不可用?

来自分类Dev

php:会话变量在头文件中不可用

来自分类Dev

变量在反应组件中的函数之外不可用

来自分类Dev

模块“模板”不可用!在角度js?

来自分类Dev

为什么我的变量在 AngularJS 承诺的范围内不可用?

来自分类Dev

JSP会话变量不可用

来自分类Dev

为什么变量不可用?

来自分类Dev

变量值不可用的问题

来自分类Dev

实例变量在单个测试中可用,但在完整的测试套件中不可用

来自分类Dev

Gitlab CI / CD:锚定/全局变量中的变量对Runner不可用

来自分类Dev

范围/角色声明在“客户端凭据”访问令牌中不可用

来自分类Dev

会话范围的托管bean在过滤器中不可用作会话属性

来自分类Dev

访问字符数组中不可用的内存位置(值超出范围)

来自分类Dev

报表模板在Visual Studio 2015 C#中不可用

来自分类Dev

流星模板数据上下文在template.ad中不可用,刷新后创建

Related 相关文章

  1. 1

    为什么在此示例中变量范围不可用

  2. 2

    在范围中途使变量不可用/不可访问

  3. 3

    在范围中途使变量不可用/不可访问

  4. 4

    为什么使用* ngIf时模板局部变量在模板中不可用?

  5. 5

    变量在脚本标签中不可用

  6. 6

    类主方法中'if'循环外的变量范围-不可用的问题

  7. 7

    时间范围面板在Grafana中不可用

  8. 8

    指定@changeset在eex模板中不可用

  9. 9

    分配@categories在eex模板中不可用

  10. 10

    Wordpress功能在模板中不可用

  11. 11

    全局变量在函数中不可用?

  12. 12

    通过环境传递的变量在脚本中不可用

  13. 13

    Travis变量在node.js中不可用

  14. 14

    通过环境传递的变量在脚本中不可用

  15. 15

    全局声明的变量在javascript函数中不可用?

  16. 16

    php:会话变量在头文件中不可用

  17. 17

    变量在反应组件中的函数之外不可用

  18. 18

    模块“模板”不可用!在角度js?

  19. 19

    为什么我的变量在 AngularJS 承诺的范围内不可用?

  20. 20

    JSP会话变量不可用

  21. 21

    为什么变量不可用?

  22. 22

    变量值不可用的问题

  23. 23

    实例变量在单个测试中可用,但在完整的测试套件中不可用

  24. 24

    Gitlab CI / CD:锚定/全局变量中的变量对Runner不可用

  25. 25

    范围/角色声明在“客户端凭据”访问令牌中不可用

  26. 26

    会话范围的托管bean在过滤器中不可用作会话属性

  27. 27

    访问字符数组中不可用的内存位置(值超出范围)

  28. 28

    报表模板在Visual Studio 2015 C#中不可用

  29. 29

    流星模板数据上下文在template.ad中不可用,刷新后创建

热门标签

归档