在angularjs中没有ng-model的控制器之间可以共享价值吗?

胡安莫施罗特

我正在尝试在2个控制器之间共享服务值,但是双向数据绑定不起作用。不使用就可以这样做ng-model吗?

// script.js
angular.module("MyApp")
    .factory("ValuesStore", function() {

        var service = {};

        service.visible = true;
        service.toggle = toggle;

        function toggle() {
            console.log(service.visible);
            service.visible = !service.visible;
        }

        return service;
    });

function FirstController($scope, ValuesStore) {
    $scope.visible = ValuesStore.visible;

    $scope.toggle = ValuesStore.toggle;
}

function SecondController($scope, ValuesStore) {
    $scope.visible = ValuesStore.visible;
}

<!-- template -->
<div ng-controller="FirstController">
    {{ visible }}
</div>

<div ng-controller="SecondController">
    {{ visible }}
</div>

我看过的所有示例都使用带有输入元素ng-model也许我应该使用观察者或广播来做到这一点。

Pankaj Parkar

您需要将visible变量存储在某个对象内,以便它将使用javascript原型继承,作用域的值将在视图上的任何位置更新,而无需将监视程序放在变量上。可以说我们创建了一个名为的变量variables,其值为,visible以便它可以反映每个控制器上的更改。您需要将整个服务引用添加到控制器,scope以便所有服务变量都可以在html上使用,例如$scope.ValuesStore = ValuesStore;

标记

  <div ng-controller="FirstController">
    <div ng-click="ValuesStore.toggle()">{{ ValuesStore.variables.visible }}</div>
  </div>

  <div ng-controller="SecondController">
     <div ng-click="ValuesStore.toggle()">{{ ValuesStore.variables.visible }}</div>
  </div>

var app = angular.module('plunker', []);

function FirstController($scope, ValuesStore) {
  $scope.ValuesStore = ValuesStore;
}

function SecondController($scope, ValuesStore) {
  $scope.ValuesStore = ValuesStore;
}

angular.module("plunker")
  .service("ValuesStore", function() {

    this.variables = {};

    this.variables.visible = true;

    this.toggle = function() {
      console.log(this.variables.visible);
      this.variables.visible = !this.variables.visible;
    }
  });

Demo Plunkr

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在视图控制器之间有很多争论是可以的吗?

控制器之间的共享状态-angularjs

在控制器AngularJS之间共享数据

在控制器之间共享数据,AngularJS

在AngularJS控制器之间共享数据

在控制器AngularJS之间共享数据

AngularJS在控制器之间共享数据

在控制器AngularJS之间共享功能

共享布局视图可以在ASP.NET MVC中具有控制器吗?

是否可以在变量中声明强参数以在控制器之间共享?

AngularJS使用$ broadcast帮助在控制器之间共享数据

angularjs在控制器之间共享数据配置

在AngularJS控制器之间共享代码/方法/功能

AngularJS在控制器之间共享异步服务数据

angularjs更改控制器之间共享的工厂对象

如何在AngularJS控制器之间正确共享数据?

使用服务在控制器之间共享数据(AngularJS)

angularjs-通过服务在控制器之间共享数据

angular js中的控制器之间的数据共享

在 AngularJs 控制器中设置 ng-model 值

AngularJS没有在控制器中接收广播

控制器中可以有虚拟动作项吗?

Rails Cookie的价值与具有辅助作用域的控制器的价值不同吗?

有人可以解释一下类级别控制器和方法级别控制器之间的区别吗?

AngularJS:控制器可以动态请求外部js吗?

没有控制器的AngularJS

如何在AngularJS中的各个控制器之间共享数据?

在我的angularjs控制器中获取ng-change字段的价值

Angular控制器可以有多个$ resource吗?