function defaultLinkFn(scope, element, attr) {
    scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
      attr.$set(attrName, !!value);
    });
  }
@ngdoc directive
@name ngOpen
@restrict A
@priority 100

@description

Sets the `open` attribute on the element, if the expression inside `ngOpen` is truthy.

A special directive is necessary because we cannot use interpolation inside the `open`
attribute. See the {@link guide/interpolation interpolation guide} for more info.

## A note about browser compatibility

Internet Explorer and Edge do not support the `details` element, it is
recommended to use {@link ng.ngShow} and {@link ng.ngHide} instead.

@example
     <example name="ng-open">
       <file name="index.html">
         <label>Toggle details: <input type="checkbox" ng-model="open"></label><br/>
         <details id="details" ng-open="open">
            <summary>List</summary>
            <ul>
              <li>Apple</li>
              <li>Orange</li>
              <li>Durian</li>
            </ul>
         </details>
       </file>
       <file name="protractor.js" type="protractor">
         it('should toggle open', function() {
           expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
           element(by.model('open')).click();
           expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
         });
       </file>
     </example>

@element DETAILS
@param {expression} ngOpen If the {@link guide/expression expression} is truthy,
    then special attribute "open" will be set on the element