我有一个可爱的指令,如果我像属性标签一样使用它。现在我想执行它,只有在我的控制器中的表单验证完成时才会执行。
我的指令代码是:
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;有效并保存。
答案 0 :(得分:0)
您可以使用ng-if
。
<div ng-if="isParentDone">
<div my-directive....>
ng-if
实际上会向DOM添加/删除html元素,因此只有在实际创建初始化函数时才会调用它们。
旁注:我看到你有$element.on('click')
。你真的应该使用ng-click
代替。