(Angularjs)共享一个控制器的视图之间的数据不同步

时间:2015-04-22 12:37:37

标签: javascript angularjs service updating

我有两个视图共享同一个控制器并使用服务在它们之间传递数据。

让我们说我们有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有点新意。

我想看到我提供的更多代码,我只是想知道我是否忘记了某些内容,或者是否有关于我错过的路线/服务/控制器的信息。

1 个答案:

答案 0 :(得分:0)

您需要做的第一件事是定义propertyListener对象添加属性

var propertyListener = {};
相关问题