Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在javascript中从ng repeat获取动态ng模型?_Angularjs - Fatal编程技术网

Angularjs 如何在javascript中从ng repeat获取动态ng模型?

Angularjs 如何在javascript中从ng repeat获取动态ng模型?,angularjs,Angularjs,我正在开发一个web应用程序,却被困在这里: HTML的一部分: <div class="input-group"> <select name="select" class="form-control input-group-select" ng-options="key as key for (key , value) in pos" ng-model="word.pos" ng-change="addPos()"> <option value="">

我正在开发一个web应用程序,却被困在这里:

HTML的一部分:

<div class="input-group">
<select name="select" class="form-control input-group-select" ng-options="key as key for (key , value) in pos" ng-model="word.pos" ng-change="addPos()">
    <option value="">Choose a POS</option>
</select>
<span class="sort"><i class="fa fa-sort"></i></span>
</div>

<ul class="listGroup" ng-show="_pos.length > 0">
<li class="list" ng-repeat="item in _pos track by $index">
    <span>
        {{item.pos}}
        <span class="btn btn-danger btn-xs" ng-click="delPos($index)">
            <span class="fa fa-close"></span>
        </span>
    </span>
<!-- I wanna add the input which can add more list item to the item.pos-->
    <div class="input-group">
        <a class="input-group-addon add" ng-class=" word.newWordExp ? 'active' : ''" ng-click="addItemOne()"><span class="fa fa-plus"></span></a>
        <input type="text" class="form-control exp" autocomplete="off" placeholder="Add explanation" ng-model="word.newWordExp" ng-enter="addExpToPos()">
        {{word.newWordExp}}
    </div>
</li>
</ul>
因此,我想做的是选择一个选项并将值附加到$scope.\u pos,然后显示为包含所有选择的列表

在每个列表项中,添加一个输入字段,并将子列表添加到$scope.\u pos值

  • n。
    • 解释1
    • 说明2
    • 说明3
  • 副词。
    • 解释1
    • 说明2
所以我不知道如何生成动态ng模型并使用javascript中的值

通常情况下,HTML中的ng model=“word.newexplaution[item]”应该类似,但在javascript中,$scope.word.newexplaution[item]表示“未定义项”


有人能帮忙吗?

如果我理解正确,你可以这样做:

  • 将列表存储在对象数组
    this.lists
  • 解释数组中的第一个对象用空字符串初始化,因此
    ng repeat
    将呈现第一个解释表单
  • 然后用
    ng repeat
    在其上循环。在那里,您还可以动态添加解释项的添加表单
  • 您还可以在解释数组的嵌套
    ng repeat
    内创建追加/删除/编辑按钮。附加和删除已添加到演示中
  • 请在下面或本文档中找到演示

    angular.module('demoApp',[])
    .控制器(“appController”,appController);
    函数AppController($filter){
    var vm=这个,
    解释模板={
    名称:“”,
    文本:“”
    },
    findInList=函数(解释){
    返回$filter('filter')(vm.lists{
    解释:解释
    })[0];
    };
    此选项=[{
    名称:“选项1”,
    数值:0
    }, {
    名称:“选项2”,
    价值:1
    }, {
    名称:“选项3”,
    价值:2
    }];
    this.lists=[];
    this.selectedOption=this.options[0];
    this.addList=函数(名称、选项){
    var list=$filter('filter')(vm.lists{
    姓名:姓名
    });//它在列表中吗?
    console.log(名称、选项、列表、list.length==0);
    //vm.list
    如果(!list.length){
    vm.lists.push({
    姓名:姓名,,
    选项:选项,
    解释:[角度。复制(解释样本)]
    });
    }
    };
    this.append=函数(解释){
    log(explain,$filter('filter')(vm.list{
    解释:解释
    }));
    var currentList=findInList(解释);
    currentList.explainstructions.push(angular.copy(explainTmpl));
    }
    this.delete=函数(解释){
    console.log(解释);
    var currentList=findInList(解释),
    index=currentList.explains.indexOf(explain);
    如果(索引==0&¤tList.Expansions.length==1){
    //稍后显示警报,如果大小=1,则无法删除第一个元素
    返回;
    }
    当前列表.说明.拼接(索引1);
    };
    }
    AppController.$inject=['$filter']
    
    
    调试输出-当前列表:{{ctrl.lists}json:2}
    列表说明-{list.name}
    所选选项为:{ctrl.selectedOption}
    

    此处尚未解释

    {{explain.title} {{explain.text}

    标题: 正文: 追加 删除
    不客气。很高兴听到你的应用程序现在运行得更好。太好了。我也在你的github回购的一个分支机构工作过一段时间。只是为了学习。它在branch
    devel
    中,几乎可以工作了。但有些问题仍然悬而未决。如果它能教你一些东西,你可以用它来学习。这是我的个人学习项目,也是我的投资组合之一。现在我遇到了一个问题,在脚本中将包含可读可打印文本的图像转换为文本字符串。太难了。。。。
    $scope._pos = [];
    $scope.addPos = function () {
        console.log("You selected something!");
        if ($scope.word.pos) {
            $scope._pos.push({
                pos : $scope.word.pos
            });
        }
        console.dir($scope._pos);
        //console.dir($scope.word.newWordExp[posItem]);
    };
    $scope.delPos = function ($index) {
        console.log("You deleted a POS");
        $scope._pos.splice($index, 1);
        console.dir($scope._pos);
    };
    
    $scope.addItemOne = function (index) {
        //$scope.itemOne = $scope.newWordExp;
        if ($scope.word.newWordExp) {
            console.log("TRUE");
            $scope._newWordExp.push({
                content: $scope.word.newWordExp
            });
            console.dir($scope._newWordExp);
            $scope.word.newWordExp = '';
        } else {
            console.log("FALSE");
        }
    };
    $scope.deleteItemOne = function ($index) {
        $scope._newWordExp.splice($index, 1);
    };