下面的代码使用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'
如果需要,我可以提供其他代码或信息
答案 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
的方式