AngularJS - 无法更改输入框的值

时间:2015-06-26 16:56:45

标签: angularjs

下面的代码使用Angular将输入值从100更改为200。当我使用我的控制器来改变输入框的值时,我得到一个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 个答案:

答案 0 :(得分:1)

尝试将控制器修改为:

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

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

}]);

答案 1 :(得分: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

为了理解,请提供您想要实现的更多信息(为什么要改变?)......

答案 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

的方式

Here the example in JSFiddle