仅在父事件完成时执行angular指令

时间:2015-05-07 14:32:36

标签: javascript jquery angularjs

我有一个可爱的指令,如果我像属性标签一样使用它。现在我想执行它,只有在我的控制器中的表单验证完成时才会执行。

我的指令代码是:

myApp.directive('myDirective', function ($location) {
'use strict';

return {
  restrict: 'A',
  replace: false,
  scope: {
    'myDirective': '@'

  },

  link: function ($scope, $element, $attrs) {

    initialize();

    /* initialize -
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    function initialize() {

        createEventListeners();

    }

    /* createEventListeners -
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    function createEventListeners() {
      // listen for a click
      $element.on('click', function () {
        // set the hash like a normal anchor scroll
        $location.hash($scope.myDirective);

        // smooth scroll to the passed in element
        scrollTo($scope.myDirective);
      });
    }.... etc.

我的HTML是:

<button class="btn btn-default btn-lg btn-step" data-my-directive="ats" data-ng-click="stepone.$valid && saveStepOne()" type="submit">Next</button>

该指令用于平滑滚动到页面上的某个锚点...
data-my-directive='ats'实际上只需添加网址栏#ats并开始滚动。但我的想法是:

我想开始滚动 &#34; stepOne&#34;有效并保存。

1 个答案:

答案 0 :(得分:0)

您可以使用ng-if

<div ng-if="isParentDone">
  <div my-directive....>

ng-if实际上会向DOM添加/删除html元素,因此只有在实际创建初始化函数时才会调用它们。

旁注:我看到你有$element.on('click')。你真的应该使用ng-click代替。