将值传递给angularjs中指令的控制器?

时间:2017-03-07 16:46:02

标签: javascript angularjs

以下是我的指令

的定义
module.exports = ()=>{
  return {
    restrict: 'E',
    templateUrl: "/components/appointment/appointment.html",
    scope: {iter: '=iter'},
    controller: "appointmentCtrl"
  };
};

我正在使用

来调用它
appointment(iter="itenary")

现在问题是当我尝试使用

在模板中渲染它时
p(ng-bind="iter.itenery")

它工作正常并向我显示它支持但在控制器内部的正确字符串

module.exports = function($scope,$rootScope,api){
  console.log($scope.iter.itenery);

  $scope.event = function(){
    console.log($scope.iter.itenery);
  }
});

返回undefined。现在为了调试,我将$scope.event函数添加到模板中的按钮,该按钮在按钮单击时触发。那时我得到了我期望的正确值。

这让我相信在设置$scope.iter的值之前调用控制器。现在我需要在控制器中赋值来渲染模板数据onLoad。我怎么能这样做?

修改

模板的代码是

.appointment(ng-init="")
  p(ng-bind="iter.itenery")
  ul.dayTitle
    li(ng-repeat="day in [] | range: totDays")
      h5(data-ng-class="{'active': day==currentDay}" ng-click="setDay(day)") Day {{day}}
    li
      h5.add(ng-click="addDay()") +
  .day
    .hour(ng-repeat="i in curIter")
      .label(ng-show="i.index>10") {{i.index-1}}00 - {{i.index}}00
      .label(ng-show="i.index<10") 0{{i.index-1}}00 - 0{{i.index}}00
      .label(ng-show="i.index==10") 0{{i.index-1}}00 - {{i.index}}00
      .half.first(dropzone data-time-slot="{{(i.index*2-1)}}")
        img(draggable src="{{i.first.icon}}" id="{{i.first._id}}")
      .half.second(dropzone data-time-slot="{{(i.index*2)}}")
        img(draggable src="{{i.second.icon}}" id="{{i.second._id}}")

注意第二行绑定工作正常但不在控制器

0 个答案:

没有答案