AngularJS - не может изменить значение поля ввода

0

Код ниже изменяет входное значение от 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" неопределенного

При необходимости я могу предоставить дополнительный код или информацию

Теги:

3 ответа

1
Лучший ответ

Я думаю, вы этого хотите:

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

Чтобы понять, пожалуйста, предоставьте дополнительную информацию о том, чего вы хотите достичь (почему изменение?)...

1

Попробуйте изменить контроллер следующим образом:

Foobar.controller('FooController', ['$scope', function ($scope) {

$scope.setPrice = function() {
    $scope.foo = {'price': 200};
    return $scope.foo.price;
}
$scope.setPrice();

}]);
  • 0
    Я получаю $ scope.setPrice (); это не функция при этом
  • 0
    см редактировать мой ответ
Показать ещё 2 комментария
0

Я думаю, вы пытаетесь это сделать

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

Вот пример в JSFiddle

  • 0
    Почему я не могу просто использовать $ scope.foo.price = price? Что делать, если у меня есть несколько атрибутов, таких как имя $ scope.foo.name. Будут ли они перезаписаны?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню