2017-02-20 2 views
0

Я изучаю среднюю разработку стека и следую за учебным курсом видео. Все шло хорошо, пока я не пересек эту ошибку, пытаясь совместить два поля пароля. «Password» и «Confirm Password» Я пишу точный код, как учебник пока я получаю следующие ошибки в командной строке (Глоток служит)

ошибка «$ ATTRS» не задаваемая нет- UNDEF

ошибка "$ ATTRS" не задаваемая нет-UNDEF

Здесь нет кода

export function CompareToDirective($parse) { 
'ngInject' 
return { 
    require: 'ngModel', 
    link: function (scope, elm, attrs, ngModel) { 
     var mainModel = $parse(attrs.compareTo); 
     var secondModel = $parse(attrs.ngModel); 

     scope.$watch(attrs.ngModel, function (newValue) { 
      ngModel.$setValidity($attrs.name, newValue === mainModel(scope)); 
     }); 

     scope.$watch(attrs.compareTo, function (newValue) { 
      ngModel.$setValidity($attrs.name, newValue === secondModel(scope)); 
     }); 
    } 
} 

}

EDIT

Вот форма я пытаюсь проверить на всякий случай

<form name="register"> 
       <div class="form-group"> 
        <label>Email address</label> 
        <input type="email" class="form-control"> 
       </div> 
       <div class="form-group"> 
        <label>Password</label> 
        <input type="password" class="form-control" name="pwd" ng-model="pwd"> 
       </div> 
       <div class="form-group"> 
        <label>Password Confirm</label> 
        <input type="password" class="form-control" compareTo="pwd" name="pwdConfirm" ng-model="pwdConfirm"> 
       </div> 
       <span ng-show="register.pwdConfirm.$invalid">Passwords do not match</span> 
       <button type="submit" class="btn btn-default">Submit</button> 
      </form> 
+0

удалить «$» от $ ATTRS .. просто использовать AttrS –

+0

Вы уверены, что это не просто 'attrs' ... это то, что у вас есть в определении вашей функции. – TripeHound

+0

http://pasteboard.co/AG6q8O6OL.png Вот скриншот кода из учебника. который имеет «$ attrs» Когда я удаляю $ из «attrs» Ошибки идут, но форма не работает –

ответ

0

Ok. Я смог заставить его работать. Здесь Вы можете найти код

.directive("compareto", function($parse) { 
    return { 
    require: 'ngModel', 
    link: function (scope, elm, attrs, ngModel) { 
    var mainModel = $parse(attrs.compareto); 
    var secondModel = $parse(attrs.ngModel); 

    scope.$watch(attrs.ngModel, function (newValue) { 
      ngModel.$setValidity(attrs.name, newValue === mainModel(scope)); 
    }); 

    scope.$watch(attrs.compareto, function (newValue) { 
     ngModel.$setValidity(attrs.name, newValue === secondModel(scope)); 
    }); 
} 
} 
}); 

и форма будет

<form name="register"> 
      <div class="form-group"> 
       <label>Email address</label> 
       <input type="email" class="form-control"> 
      </div> 
      <div class="form-group"> 
       <label>Password</label> 
       <input type="password" class="form-control" name="pwd" ng-model="pwd"> 
      </div> 
      <div class="form-group"> 
       <label>Password Confirm</label> 
       <input type="password" class="form-control" compareto="pwd" name="pwdConfirm" ng-model="pwdConfirm"> 
      </div> 
      <span ng-show="register.pwdConfirm.$invalid">Passwords do not match</span> 
      <button type="submit" class="btn btn-default">Submit</button> 
     </form> 
+0

Я экспортирую функцию 'CompareToDirective', но теперь я, кажется, не понимаю, как Я превращаю его в функцию, которую я могу экспортировать. можете ли вы сделать это, как я могу выразить его с тем же именем в 'index.module.js'. Извините, что являетесь noob –

+0

в вашем коде в форме попробуйте изменить compareTo = "pwd" to compare-to = "pwd". –

+0

Благодаря @pawan Ее получают работать сейчас, я заменить этот код 'возврата { требуют: 'ngModel', ссылка: функции (сфера охвата, вяз, AttrS, ngModel) { вар mainModel = $ разобрать выражение (AttrS .по сравнению с); var secondModel = $ parse (attrs.ngModel); scope. $ Watch (attrs.ngModel, function (newValue) { ngModel. $ SetValidity ($ attrs.name, newValue === mainModel (scope)); }); scope. $ Watch (attrs.compareTo, function (newValue) { ngModel. $ SetValidity ($ attrs.name, newValue === secondModel (scope)); }); } } ' к вашим. –

Смежные вопросы