如何在不改变其范围的情况下将额外参数传递给指令

时间:2016-02-15 18:45:45

标签: angularjs

我一直在与角度斗争,以至于我需要一些帮助。我想要做的只是包含一个模板,该模板仅在标题上有所不同,在同一个html中有两次(看起来很容易但有角度使得这么难......)我需要这些模板使用相同的范围。 这应该是类似的东西

app.directive('datePickerModal', function(){
    return {
      restrict: 'E',
      controller: 'activityManagementCtrl',
      templateUrl: '/templates/date_modal.html',
      scope: {
       dateTitle: '=title',
       modal_id: '=id'
      }
    }
  });

在我的HTML中,它是

<date-picker-modal title="Start Date" id="start"></date-picker-modal>
<date-picker-modal title="Deadline" id="deadline"></date-picker-modal>

我还有一个

的控制器
$scope.activties = [**SOME ACTIVITES**];

并将其激活在我的html文件的顶部。问题是当我访问我的范围时,它没有任何活动,也没有任何东西。因此,角度正在创建我的控制器的副本,而不是使用我的。此外,如果我删除“范围:{}”,它使用正确的范围,但现在我无法传递我需要激活模态和东西的信息。有解决方案吗它似乎是我循环,要么我松散额外的信息或活动列表。 谢谢!

2 个答案:

答案 0 :(得分:1)

如果你在 1.3 或以上

,则取决于您的角度版本
return {
      restrict: 'E',
      controller: 'activityManagementCtrl',
      templateUrl: '/templates/date_modal.html',
      transclue: true, // <----------------
      scope: {
       dateTitle: '=title',
       modal_id: '=id'
      }
    }

您现在可以使用parentScope访问scope.$parent了。

答案 1 :(得分:0)

https://plnkr.co/edit/ozAstdiMTfuXD8NKXsUI?p=info

因此,$scope.activties = [**SOME ACTIVITES**];不在&#39; activityManagementCtrl&#39;?因为它工作正常。您不必使用父控制器中的内容。尝试使它与指令控制器一起使用,因此它可以在以后与其他控制器一起使用,并且更容易让其他人理解。 :)