转换指令以使用隔离范围

时间:2015-02-27 11:04:36

标签: angularjs angularjs-directive

我创建了一个简单的指令,但目前我没有设置任何范围。但是我希望该指令使用隔离范围,以便我可以轻松地重用它。

这是我的html,该指令被称为" select-time":

<div class="menuHour after" select-time><div class="menuHour-panel before"><span class="menuHour-panel-title" ng-click="changeToBefore()">Before 12h</span></div>

我保持这个例子简短,所以它在这里做的唯一事情就是改变课程&#34; menuHour&#34;到&#34;菜单之前&#34;。

用方法&#34; changeToBefore()&#34;来做这件事。

这是我的指示:

angular.module("tiki").directive("selectTime", function(newTiki){

return {

    restrict:"A",
    controller:function($scope, $element, $attrs){

        $scope.changeToBefore = function(){

            var menuHour = document.querySelector(".menuHour")

            menuHour.classList.remove("after")
            menuHour.classList.add("before")

        }

    }

}

})

如何将其更改为隔离范围指令?

THX,

1 个答案:

答案 0 :(得分:1)

您可以使用scope: {}定义isolated scope

我也会使用$ element而不是再次获取该元素!

angular.module("tiki").directive("selectTime", function(newTiki){

  return {

      restrict:"A",
      scope: {},
      templateUrl: '/path/to/directive.html',
      controller:function($scope, $element, $attrs){

        $scope.changeToBefore = function(){

            $element.removeClass("after")
            $element.addClass("before")

        }

      }

  }
})