#javascript #html #angularjs #model
#javascript #HTML #angularjs #Модель
Вопрос:
У меня странный вопрос относительно моего приложения Angular.
Я хотел получить входные тексты, когда пользователь вводит тексты в поле ввода.
мой html
<input type="text" class="form-control" ng-model="texts" ng-change="type()"/>
мой js
$scope.type = function() {
console.log($scope.texts)
console.log($scope) //doesn't see texts property either
}
Однако каждый раз, когда я что-то печатаю, в первом журнале консоли отображается «undefined». Похоже, контроллер не может найти свойство texts. Кто-нибудь может помочь мне в этой странной проблеме? Большое спасибо!
Комментарии:
1. Почему бы вам сначала не определить это?
2. можете ли вы создать jsfiddle?
3. Внутри функции, определенной на,
$scope
вы обычно можете вместо этого найти значения, которые ищетеthis
. Итак, попробуйте заменить$scope.texts
наthis.texts
.4. Просто из любопытства Angular обеспечивает двустороннюю привязку, так зачем вам использовать для этого функцию?
5. Ваш код работает нормально — jsfiddle.net/spencerooni/mX37Q — Однако мы можем только догадываться о том, что код не был показан.
Ответ №1:
Это может быть достигнуто с помощью двусторонней системы привязки данных angular:
Привязка данных в приложениях Angular — это автоматическая синхронизация данных между компонентами модели и представления. Способ, которым Angular реализует привязку данных, позволяет вам рассматривать модель как единственный источник истины в вашем приложении. Представление всегда является проекцией модели. Когда модель изменяется, представление отражает изменения, и наоборот.
Это позволяет нам синхронизировать свойства области видимости нашего контроллера путем привязки к ним в нашем html.
Итак, мы могли бы определить наш контроллер следующим образом:
myApp.controller('SomeController', function ($scope) {
$scope.text = "";
});
Теперь мы можем использовать это в нашем html следующим образом:
<div ng-controller="SomeController">
<input type="text" class="form-control" ng-model="text" />
</div>
Здесь важно обратить ng-model
внимание на директиву. Здесь мы привязываем text
свойство, которое мы определили в нашем контроллере, к <input>
полю. Теперь, с двусторонней привязкой, если мы введем в поле ввода, оно автоматически обновит text
свойство. Таким образом, мы можем получить доступ к значению поля ввода в нашем контроллере без необходимости выполнять какую-либо дополнительную работу.
Вот plnkr с рабочим примером: http://plnkr.co/edit/xEkoDbPxwrWgGfuEiS3a?p=preview
Надеюсь, это поможет 🙂
Ответ №2:
$scope
должен быть передан контроллеру. Проверьте аргументы вашего контроллера.