Ответ 1
Я установил ваш пример plnkr с использованием объектной модели вместо примитивного типа.
$scope.model = {};
$scope.model.code = "test";
$scope.setCode = function(){
alert($scope.model.code);
}
Смотрите plnkr.
У меня возникают некоторые "проблемы", считывающие ng-модель из контроллера.
Я хочу сделать это:
<input type="text" ng-model="code">
<button ng-click="setCode()">Login</button>
И в моем контроллере доступ к этой переменной:
$scope.setCode = function(){
alert($scope.code);
}
Это то, что я хочу сделать, но моя переменная кода undefined.
Я нашел два способа заставить это работать:
1) Передача переменной в качестве аргумента
<input type="text" ng-model="code">
<button ng-click="setCode(code)">Login</button>
и
$scope.setCode = function(code){
alert(code);
}
2) Объявление моей переменной как объекта
<input type="text" ng-model="code.text">
<button ng-click="setCode()">Login</button>
и
$scope.code = {text: 'foo'};
[...]
$scope.setCode = function(){
console.log($scope.code);
}
(я предпочитаю второй)
Но я немного смущен тем, что должен делать. Можно ли объявить мои ng-модели как объекты? Я должен объявить ВСЕ мои модели как объекты?
EDIT: Вот Plnkr проблемы
В этом примере (я использую Ionic framework), я объявляю переменный код с тегом значений, когда я меняю модель на входе и нажмите кнопку "Пуск", теоретически я должен увидеть в предупреждении новое значение модели. Но то, что я вижу, является старым.
Спасибо!
Я установил ваш пример plnkr с использованием объектной модели вместо примитивного типа.
$scope.model = {};
$scope.model.code = "test";
$scope.setCode = function(){
alert($scope.model.code);
}
Смотрите plnkr.
Ваш первый пример работает, вот plunkr.
Если вы нажмете кнопку без ввода какого-либо текста в поле ввода, вы получите предупреждение undefined
. $scope.code
определяется, как только вы введете что-то в его связанное поле ng-model="code"
.
Вы также можете инициализировать его по умолчанию в своем контроллере:
$scope.code = 'my default value';
Ионная директива создаст новую область, если вы хотите напрямую использовать объект кода в контроллере, вы должны установить ng-controller на ионное содержимое на вашей HTML-странице, а не в состояние маршрутизатора.