我有两个视图共享同一个控制器并使用服务在它们之间传递数据。
让我们说我们有view1和view2,在view2中按下的按钮应该在view1中改变一些东西。
当对view1收费时,存储在服务中的数据是其$ scope(如果我没有记错的话,控制器实例的$ scope)。
因此,当在view2中按下按钮时,服务会更新view1的$ scope上的内容。问题是,当view1和view2同时充电时,它运行良好(view2是一个隐藏在右侧并始终存在的菜单)。
但是,当我切换页面(我收取view3)并回到view1(请记住view2没有充电)时,它再也不会工作了,感觉就像我的观点一样。使用相同的服务,因为当我同时检查它们时数据是不同的!!
我不知道我是否解释得很好,但如果你对它为什么不工作有一些想法,我会感到高兴。 以下是一些代码:
我的路线:
gif
在html中:
$routeProvider.
when('/', {
templateUrl: 'js/views/presentation.html'
}).
when('/action', {
templateUrl: 'js/views/main.html'
}).
when('/about', {
templateUrl: 'js/views/about.html'
});
我的服务:
<li ng-class="{active: routeIs('/')}"><a href="#/">Home</a></li>
<li ng-class="{active: routeIs('/action')}"><a href="#/action">Action</a></li>
<li ng-class="{active: routeIs('/about')}"><a href="#/about">About</a></li>
我的控制器部分:
North.factory('urlupdate', function() {
var factory = {};
var propertyListener;
factory.setPropertyHost = function(value) {
propertyListener.host = value;
};
factory.setPropertyActionport = function(value) {
propertyListener.actionPort = value;
};
factory.setPropertyindexPort = function(value) {
propertyListener.indexPort = value;
};
factory.setPropertyserviceport = function(value) {
propertyListener.serviceport = value;
};
factory.registerForPropertyUpdate = function(listener) {
propertyListener = listener;
};
factory.getProperty = function() {
return propertyListener.host;
}
factory.getRegister = function() {
return propertyListener;
}
return factory;
});
在view2中调用函数updatevariable。
我不知道为什么它在我的路线被修改后停止工作我对angularjs有点新意。
我想看到我提供的更多代码,我只是想知道我是否忘记了某些内容,或者是否有关于我错过的路线/服务/控制器的信息。
答案 0 :(得分:0)
您需要做的第一件事是定义propertyListener
对象添加属性
var propertyListener = {};