このPLUNKにはng-show
という要素を持つdivがあり、これはshow()
関数を呼び出すfalseを返します。したがって、私はdivが表示されないことを期待しています。`ng-show`呼び出し関数が動作しません
また、show()
関数が2回呼び出されることを確認してください(console.logにsh
変数が2回表示されます)。これを修正するには?
Javascriptを
var app = angular.module('app', []);
app.directive('mydir', function ($compile) {
var directive = {};
directive.restrict = 'EA';
directive.scope = {
control: '='
};
directive.template = '<div id="root"></div>';
directive.link = function (scope, element, attrs) {
var sh = false;
var wrap = angular.element('<div id="wrap" ng-show="show()"></div>');
wrap.attr('sh', sh);
var wrapc = $compile(wrap)(scope)
element.append(wrapc);
scope.show = function() {
var elem = angular.element(document.querySelector('#wrap'));
var sh = elem.attr('sh');
console.log(sh); // <-- should log false only once, not twice
return sh;
}
};
return directive;
});
あなたはattr
からsh
値を読んで、そうすることによって、それは文字列になるためのdivが表示されている理由は、問題があるHTML
<mydir></mydir>
このリンクを参照してくださいhttp://stackoverflow.com/questions/27025075/ng-show-called-multiple-times –