我在控制器 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中的参数来连接它们。