2015-06-26 3 views
0

Код ниже изменяет входное значение от 100 до 200 с помощью углового. При использовании моего контроллера для изменения значения окна ввода я получаю TypeError.AngularJS - не может изменить значение поля ввода

<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: Cannot set property 'price_min' of undefined

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

+1

может у поста скрипки .. –

+1

не используйте $ scope таким образом 'function setPrice ($ scope) {...}' – Shaxrillo

ответ

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 появляется после создания экземпляра контроллера. Это означает, что вы вход имеет значение

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

1

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

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

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

}]); 
+0

Я получаю $ scope.setPrice(); не является функцией при выполнении этого – BDillan

+0

см. редактирование на мой ответ – Sajal

+0

просто любопытно, этот скрипт не сработал? – Sajal

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

Here the example in JSFiddle

+0

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

Смежные вопросы