我正在使用AngularJS,而我正在尝试创建一个模板,其中我有一个隐含的对象,调用测试,而在测试我有一个我在Controller中调用函数时想要重复的数组,但是当我尝试在数组中推送一个对象时,我得到未定义的错误。
以下是我的代码示例:
<body ng-app="MyApp" ng-controller"MyController">
<input ng-model="person.name">
<button ng-click="createPhone()">
<div data-ng-repeat="phone in person.phones">
<input ng-model="phone.number">
</div>
</div>
</div>
这是我的控制器:
//app.controller...
$scope.createPhone(){
var phone = {number: '123456789'};
$scope.person.phones.push(phone);
}
我得到了:
TypeError:无法设置属性&#39;手机&#39;未定义的。
有人可以帮助我吗?
答案 0 :(得分:15)
你想要做这样的事情:
示例可以在这里看到 - http://jsfiddle.net/hm53pyjp/4/
<强> HTML:强>
<div ng-app>
<div ng-controller="TestCtrl">
<input ng-model="person.name" />
<button ng-click="createPhone()">Create Phone</button>
<div ng-repeat="phone in person.phones">
<input ng-model="phone.number" />
</div>
</div>
</div>
<强>控制器:强>
创建一个person
对象,您可以添加东西并创建一个函数来将对象推送到它。
所以我在这里创建了一个person
,其中包含属性name
和phones
。我已将name
属性的值设为&#34; User&#34;和phones
属性是一组数字。在这种情况下,我刚刚填充了一个数字,以便开始使用。
然后在ng-click
上调用该函数,只需将对象推送到现有的phones
数组。
当您将对象推送到数组时,ng-repeat
将开始更新页面上的输入。
function TestCtrl($scope) {
$scope.person = {
name : "User",
phones : [{number: 12345}]
};
$scope.createPhone = function () {
$scope.person.phones.push({
'number' : '111-222'
});
};
}