Код ниже изменяет входное значение от 100 до 200, используя Angular. При использовании моего контроллера для изменения значения окна ввода я получаю TypeError.
<div ng-controller="FooController" ...>
<input ng-model="foo.price" type="text" name="price" class="price" id="price-min" ng-init="foo.price = '100'" />
...
</div>
контроллер:
Foobar.controller('FooController', ['$scope', function ($scope) {
setPrice($scope);
function setPrice($scope) {
var price = '200';
$scope.foo.price = price;
}]);
ошибка:
TypeError: невозможно установить свойство "price_min" неопределенного
При необходимости я могу предоставить дополнительный код или информацию
Я думаю, вы этого хотите:
Html-код:
<div ng-controller="FooController">
<input ng-model="foo.price" type="text" name="price" class="price" id="price-min" ng-init="foo.price = '100'"/>
Угловой-код:
var Foobar = angular.module('testapp', []);
Foobar.controller('FooController', ['$scope', function($scope) {
$scope.foo = {};
setPrice($scope);
function setPrice($scope) {
$scope.foo.price = "400";
}
}]);
Проблема в том, что у вас еще нет foo. Это похоже на запись
function test(){
i=123;
}
Посмотрите, что пропало?
Однако при выполнении этого ng-init появляется после создания экземпляра контроллера. Это означает, что вы вводите значение 100
Чтобы понять, пожалуйста, предоставьте дополнительную информацию о том, чего вы хотите достичь (почему изменение?)...
Попробуйте изменить контроллер следующим образом:
Foobar.controller('FooController', ['$scope', function ($scope) {
$scope.setPrice = function() {
$scope.foo = {'price': 200};
return $scope.foo.price;
}
$scope.setPrice();
}]);
Я думаю, вы пытаетесь это сделать
HTML
<div ng-controller="setPrice">
<input ng-model="foo.price" type="text" name="price" class="price" id="price-min" ng-init="foo.price = '100'" />
<br/><br/>
Hello, {{foo.price}}!
</div>
JS
var myApp = angular.module('myApp',[]);
setPrice($scope);
function setPrice($scope) {
var price = '200';
$scope.foo = {
price : price
};
}
Ошибка заключалась в том, как вы объявляете свой $ scope.foo