【问题标题】:Change scope variables between controller and directive在控制器和指令之间更改范围变量
【发布时间】:2016-02-22 12:29:30
【问题描述】:

正如标题所说,我试图从指令和我的控制器更改范围变量。但它不能改变控制器/指令的值,这里是jsfiddle

如果您单击Change 按钮,它将更改控制器的两个范围变量。

然后当单击changed from controller 按钮(现在是指令)时,它将更改drop 变量但不会更改select 变量并且Change 按钮无法再次更改该变量。

我也尝试按照here 的描述传递变量,但没有 成功。

指令:

 app.directive("drop", [function() {
  return {
    scope: true,
    restrict: 'A',

    link: function(scope, element, attrs) {
      return element.bind('click', function(e) {
        scope.drop = "changed to drop";
        scope.select = "changed to select";
        scope.$apply();
      });
    }
  };
}]);

控制器:

function myController($scope) {
  $scope.drop = "Initial value";
  $scope.select = "Initial Value";
  $scope.selection = function() {
    $scope.drop = "changed from controller";
    $scope.select = "changed from controller";
  };
}

编辑:

更多测试表明,当改变指令中的范围变量时,控制器不能再改变它了..

【问题讨论】:

  • 您使用scope: true,它将创建一个子范围,该子范围在原型上继承自控制器范围。控制器作用域的变化将反映在子作用域中,而不是相反
  • @devqon 是的,删除范围:true 解决了它,但在我的本地项目中,我正在准确地镜像 jsfiddle 中的内容,一旦单击指令事件,它将无法工作......

标签: angularjs scope directive


【解决方案1】:

删除指令的scope 属性值,它赋予指令它自己的范围

【讨论】:

  • 我正在使用 requirejs 不确定这是否会影响它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多