控制器之间通过 $window.location.href 进行通信



我在控制器 1 中有以下语句:

$scope.field1 = "abcd";
$window.location.href = 'main.html';

然后,在main.html中,我有控制器 2,并且需要有权访问 field1 的值。

是否可以使用服务或工厂来执行此操作,因为$window.location.href将替换范围? 在这种情况下,$broadcast/$emit会起作用吗?

更新

我尝试使用单例服务调用控制器 1 中的 set 和控制器 2 中的 get,但控制器 2 中的变量仍然为空

app.service('singleton', function() {
      var myField1 = null;
      this.set = function(f) {
          myField1 = f;
      };
      this.get = function() {
          return myField1;
      };

如果您有 2 个不同的页面,例如:

<html>
page1
</html>
<html>
page2
</html>

然后它们是完全独立的,因此 angular 将在 page1 和 page2 中分别加载 - 你不能在它们之间建立 javascript 连接。当您更改 url 时,所有 js 对象都会被丢弃。因此,您可以使用param page1.html?param=value,cookie,localStorage(同一域的2个最新

)。

这就是为什么大多数角度应用程序都是一个页面 - 您可能会在 url 中看到不同的路径,但这仍然只是一个页面(即索引.html)。在这种情况下,您可以使用角度服务,$rootScope(实际上也只是另一种服务)或使用ui-router中的参数来连接它们。

最新更新