当前位置: 首页 > 面试题库 >

角$ location.path不起作用

郭华美
2023-03-14
问题内容

我有一个与此问题类似但又不同的问题。

在这里,我试图为window.postMessage处理程序添加事件侦听器。

app.run(function ($location, $window, $rootScope) {
  $window.addEventListener('message', function(e) {
      $location.path("/abc");
      console.log($location.path()); // this prints "/abc" as expected

      $rootScope.$apply(); // this has no effect

      $scope = angular.element(document).scope(); // this is the same as $rootScope
      $scope.$apply(); // so this also has no effect
  });
});

$location.path没有被角的认可。

另一个问题是我应该调用$apply()作用域,但是对我来说唯一可用的作用域是$rootScope调用$apply()它似乎不起作用。

对答案的评论表明,可以使用

$scope = angular.element(document).scope()

但这给了我$rootScope,这是行不通的。

如何获得角度来重新确定更改$location.path()?是否有更好的方式注册message回调,以便可以更改路径?


问题答案:

您应该在$apply()类似方法中将表达式作为函数运行

app.run(function ($location, $window, $rootScope) {
  $window.addEventListener('message', function(e) {
      $rootScope.$apply(function() {
        $location.path("/abc");
        console.log($location.path());
      });
  });
});

请参阅文档-ng。$rootScope.Scope。

如果要提高可测试性,请使用$console代替console并注入该对象。



 类似资料:
  • 问题内容: 我想右上角,但仅适用于左上角 问题答案: 问题在于您需要在为当前设备调整视图大小之前获取视图的边界。它比以后在屏幕上出现时要大,因此,圆角矩形的右侧不在屏幕的右侧。 在调整视图大小之后,您需要稍后创建和设置,这意味着在运行循环的布局阶段期间或之后。因此,要么继承视图的子类并在视图的方法中进行操作,要么在视图控制器的方法中进行操作。

  • 在代码中使用XSLT 2.0的字符映射功能时,我遇到了以下错误。 名称空间中的元素“样式表”http://www.w3.org/1999/XSL/Transform'命名空间中的子元素'character map'无效'http://www.w3.org/1999/XSL/Transform“是的 这是我的XSLT声明 请提供有关如何在XSLT中使用字符映射的帮助。

  • 问题内容: 似乎无法正常工作。通过日期是这样的: 在目标状态上忽略参数 码: 现场示例可以在 这里 找到 谢谢。 问题答案: 您不能在状态之间传递任意参数,您需要将它们定义为定义的一部分。例如 上面的代码将输出定义了contactId属性的对象。如果你去,你会的。 有关更多信息,请参见UI-Router URL路由的文档。

  • 在ngFor循环中使用ngModel有一个问题。我在做电子商务应用程序,我想用数量来获得输入的价值,但每个ngModel都有相同的名称,所以它一直更新所有的输入,像这样:Img和下面是我的页面代码:

  • 问题内容: 我在PhoneGap中遇到ngView的问题。 一切似乎都可以正常加载,我什至可以使用ng-controller使基本控制器正常工作。但是,当我尝试在ngView中使用路由时,什么也没发生。 index.html app.js 每次单击链接时,Eclipse记录器都会显示该链接,而在没有链接的情况下尝试该链接会引发一个错误,即找不到该路径。 从我在其他任何地方已经做好的准备,这应该可以

  • 我试着用angular-6中的angular材质 我的材料。单元ts是这样的 它正在给出错误 请帮帮我