Связывание данных с `ng-model` не работает на некоторых системах
Довольно странно, но да, один и тот же код работает в одной системе, но не в другой.
Я разработал расширение на основе HTML-5 для приложений Adobe Creative Cloud (в Adobe CC встроена платформа Chromium, поддерживающая расширения на основе HTML), в которой я использовал среду angularJS.
Я протестировал его на многих системах с моей стороны, и он работает отлично. Но когда я отправил такое же заявление своим друзьям. Для некоторых из них - представление загружено нормально, нажатия кнопок также работали нормально, но вводимый текст не был правильно связан! Я продолжаю получать чистый текст от него - я использовал ng-model
для <input>
коробки.
Вот мой код
Посмотреть-
<div>
<input type='text' placeholder='Email' ng-model='user.email' />
<input type='password' placeholder='Password' ng-model='user.password' />
<button ng-click='login()'>Login</button>
</div>
эксплуатацииконтроллеров
$scope.user={};
$scope.login=function(){
if($scope.user.email!="" && $scope.user.password!=""){
...
...
}
else{
alert("Don't leave the fields blank!");
}
};
Результат-
Получение оповещения в некоторых системах!
У меня есть другие взгляды с подобной формоподобной структурой и та же проблема!
Я могу получить доступ к консоли разработчика, поэтому я попросил пользователей, получающих эту проблему, отправить мне содержимое консоли; но там все выглядело хорошо. На консоли не было ошибок! Могу ли я зарегистрировать что-нибудь полезное, что поможет мне найти проблему?
Поскольку я не могу повторить это с моей стороны, я не получаю подсказок, как решить эту проблему. Я не могу думать, что может быть возможной причиной (-ами) для такого поведения. Это странно
2 ответа
Я думаю, что ваш код правильный, но ng-модель создает объект пользователя, если был задан один вход.
Таким образом, если вы оставите все поля ввода пустыми, ваш пользовательский объект будет "неопределенным"
Итак, вы должны проверить прежде, если пользовательский объект не является неопределенным.
if (user === undefined) alert("email and password are empty");
Если для одного ввода формы задано какое-либо значение, пользовательский объект создается с полем формы ввода.
Есть правильный код:
if (user === undefined) alert("email and password are empty");
else {
console.log(user);
if (user.login === undefined) alert("login is empty");
else if (user.password === undefined) alert("password is empty");
else alert("amazing, thanks");
}
У меня была знакомая проблема, когда мой javascript не принимал значение моей переменной ng-model.
Например. Когда я нажимаю кнопку, значение предупреждения становится пустым:
Html:
<input type="text" ng-model="$scope.username"> {{$scope.username}}
<buton ng-click="alertUsername()">Click here</button>
Javascript:
$scope.username="";
$scope.alertUsername = function() {
alert($scope.username);
}
Когда я изменил свой HTML-код на следующий, он предупредил мое значение:
<input type="text" ng-model="username"> {{username}}
<buton ng-click="alertUsername()">Click here</button>
кажется, все, что мне нужно было сделать, это не использовать префикс $scope в моем html.