如何在$ scope AngularJS中声明Object

Luc*_*cas 9 javascript angularjs

我正在使用AngularJS并且我正在尝试创建一个模板,其中我有一个隐式对象,它调用test和内部测试我有一个数组,当我在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>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

//app.controller...
    $scope.createPhone(){
        var phone = {number: '123456789'};
        $scope.person.phones.push(phone);
    }
Run Code Online (Sandbox Code Playgroud)

我越来越:

TypeError:无法设置undefined属性'phones'.

谁能帮助我?

hax*_*tbh 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>
Run Code Online (Sandbox Code Playgroud)

控制器:

创建一个person可以添加内容的对象,并创建一个将对象推送到其中的函数.所以我在这里创建了一个person属性namephones.我给了name属性值为"User",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'
        });

    };
}
Run Code Online (Sandbox Code Playgroud)