Javascript Can';当指令中定义了作用域:{}时,在控制器中绑定$scope

Javascript Can';当指令中定义了作用域:{}时,在控制器中绑定$scope,javascript,angularjs,Javascript,Angularjs,当我在指令的控制器中绑定一个$scope而不在指令设置中使用scope:{}时,它会工作 但是我需要scope:{}来获取指令中定义的变量 这是我的测试代码: var app = angular.module("app", []); app.directive("directive", function () { return { controller: function($scope){ $scope.id = 5; } } }); app.direct

当我在指令的控制器中绑定一个
$scope
而不在指令设置中使用
scope:{}
时,它会工作

但是我需要
scope:{}
来获取指令中定义的变量

这是我的测试代码:

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

app.directive("directive", function () {
  return {
    controller: function($scope){
      $scope.id = 5;
    }
  }
});

app.directive("childDirective", function () {
  return {
    scope: {
      id: "=user"
    },
    controller: function($scope){
      $scope.hello = "Hello";
    }
  }
})
-


{{你好}}

当我删除
作用域:{id:'=user}
时,它会工作。但我需要将id传递给控制器

有解决办法吗


提前感谢。

当您使用隔离作用域时,它仅在为指令提供的模板上有效。您可以以字符串或
templateUrl

试着这样做:

<directive>
  <child-directive user="id"></child-directive>
</directive>

如果我想定制模板,我应该使用控制器吗?我不确定你在问什么。请按指示阅读
隔离范围
,全部正确!您的解决方案有效,因此我会将答案标记为已接受。我将阅读指令中的隔离作用域。谢谢
<directive>
  <child-directive user="id"></child-directive>
</directive>
app.directive("childDirective", function () {
  return {
    scope: {
      id: "=user"
    },        
    template:'{{ hello }} ID= {{id}}',
    controller: function($scope){
      $scope.hello = "Hello";
    }
  }
})