code: function lxStep()
      {
          return {
              restrict: 'E',
              require: ['lxStep', '^lxStepper'],
              templateUrl: 'step.html',
              scope: {
                  feedback: '@?lxFeedback',
                  isEditable: '=?lxIsEditable',
                  isOptional: '=?lxIsOptional',
                  isValid: '=?lxIsValid',
                  label: '@lxLabel',
                  submit: '&?lxSubmit',
                  validate: '&?lxValidate'
              },
              link: link,
              controller: LxStepController,
              controllerAs: 'lxStep',
              bindToController: true,
              replace: true,
              transclude: true
          };
  
          function link(scope, element, attrs, ctrls)
          {
              ctrls[0].init(ctrls[1], element.index());
  
              attrs.$observe('lxFeedback', function(feedback)
              {
                  ctrls[0].setFeedback(feedback);
              });
  
              attrs.$observe('lxLabel', function(label)
              {
                  ctrls[0].setLabel(label);
              });
  
              attrs.$observe('lxIsEditable', function(isEditable)
              {
                  ctrls[0].setIsEditable(isEditable);
              });
  
              attrs.$observe('lxIsOptional', function(isOptional)
              {
                  ctrls[0].setIsOptional(isOptional);
              });
          }
      }
docs: /* Step