Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 来自不同指令的角度变量操作_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 来自不同指令的角度变量操作

Angularjs 来自不同指令的角度变量操作,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有点挣扎与无限卷轴的角度。我有一个对象数组,所有项目都存储在其中。此对象是指令控制器的一部分 现在,当我尝试实现无限滚动时,我使用单独的指令来计算偏移量。我想从定义对象数组的另一个指令访问这个滚动指令变量 我该怎么做?到这里最简单的方法是什么?我搜索了一周,找不到任何足够简单的方法来实现我的解决方案。 谢谢您可以使用指令的require属性获取另一个指令控制器的$scope,或者使用指令的父控制器传递共享值。下面是一个使用require的示例 下一个示例的时间可能不是您想要的。它们共享同一个变

我有点挣扎与无限卷轴的角度。我有一个对象数组,所有项目都存储在其中。此对象是指令控制器的一部分

现在,当我尝试实现无限滚动时,我使用单独的指令来计算偏移量。我想从定义对象数组的另一个指令访问这个滚动指令变量

我该怎么做?到这里最简单的方法是什么?我搜索了一周,找不到任何足够简单的方法来实现我的解决方案。
谢谢

您可以使用指令的
require
属性获取另一个指令控制器的
$scope
,或者使用指令的父控制器传递共享值。下面是一个使用
require
的示例

下一个示例的时间可能不是您想要的。它们共享同一个变量,但是在第一个指令的控制器中对
$scope
所做的更改将在第二个指令的控制器已经运行之后才会应用


谢谢你的帮助。是否需要使用$scope来传递变量?例如,我的控制器中没有$scope,而是使用它。variable@user007对在第一个示例中,指令共享相同的
$scope
。在第二个示例中,它们有自己的作用域,但两个作用域都可以访问同一个变量。您没有将我的答案标记为已接受。有什么不充分的地方需要我澄清吗?
<div ng-app="myApp">
  <foo></foo>
  <bar></bar>
</div>
angular.module('myApp', [])
.directive('foo', function() {
  return {
    controller: function($scope) {
      $scope.foo = 123;
    }
  };
})
.directive('bar', function() {
  return {
    require: '^foo',
    controller: function($scope) {
      console.log($scope.foo);
    }
  };
})
;
<div ng-app="myApp" ng-controller="MyCtrl">
  {{sharedValue}}
  <foo shared-value="sharedValue"></foo>
  <bar shared-value="sharedValue"></bar>
</div>
angular.module('myApp', [])
.controller('MyCtrl', function($scope) {
  $scope.sharedValue = 'abc';
})
.directive('foo', function() {
  return {
    scope: {
      sharedValue: "="
    },
    controller: function($scope) {
      console.log($scope.sharedValue); // abc
      $scope.sharedValue = 123;
    }
  };
})
.directive('bar', function() {
  return {
    scope: {
      sharedValue: '='
    },
    controller: function($scope) {
      console.log($scope.sharedValue); // still abc, will update later
    }
  };
})
;