在angularJs中,将包含JSON对象数组的范围变量分配给另一个JSON数组中的Object属性

时间:2016-01-15 17:03:07

标签: arrays angularjs json

我需要创建多个行,其中包含两个字段,一个下拉列表和一个文本框。 我创建了一个Json数组,用于将每一行保存为对象。我想将下拉列表作为对象的json数组添加到包含行的对象的json数组中。 我的代码如下:



   //Declare empty array to add new rows
        $scope.searchList ={
            sources: [{
                id: $scope.rowId,
                srcCd: '',
                srcId:''
              //want to add sourceCdMap property  and assign the json array which is in another scope variable $scope.sourceCodeMap
              
              }]
        }

     <table>
                <tr ng-repeat="source in searchList.sources track by source.id">
                    <td>
                        <div >
                            <label >Source Name</label>
                            <div >
                                <select class="form-control selectWidth" autofocus ng-model="source.srcCd"
                                        ng-change="changeSourceNew(source.id,source.srcCd)"
                                        ng-options="source.value for source in source.sourceCdMap"></select>
                            </div>
                        </div>
                    </td>
                    <td>
                        <div >
                            <label >Source ID </label>
                            <div><textarea id="source.textarea" autofocus ng-model="source.srcId"  rows="4" cols="50"   placeholder="enter SrcIds"></textarea>
                            </div>
                          
                        </div>
                    </td>
                    
                </tr>
            </table>
&#13;
&#13;
&#13;

我想添加一个&#34; sourceCdMap&#34;对象$ scope.searchList的json数组的属性,它将包含存储在$ scope.sourceCodeMap中的另一个json对象数组的下拉值。

我尝试如下,但下拉列表为空:

&#13;
&#13;
        
         initializeSourceCodeMap();

             var initializeSourceCodeMap = function () {
            $searchUtilityRemoteService.getSourceCode().then(function (resultMap) {
                $scope.sourceCodeMap = resultMap;
                $scope.sourceCodeMap.sort(sortSrcCodeBy("value"));
                $scope.selected = $scope.sourceCodeMap[0];
                $scope.searchIdForm.srcCd = $scope.selected.code;
            }, function (reason) {
                $scope.sourceCodeMap = null;
                //log error
            })
        };

    //Declare empty array to add new rows
        $scope.searchList ={
            sources: [{
                id: $scope.rowId,
                srcCd: '',
                srcId: '',
                sourceCdMap: $scope.sourceCodeMap
            }]
        }
&#13;
&#13;
&#13;

FYI&#34; $ scope.sourceCodeMap&#34;正在代码的其他部分工作或当我尝试在我的控制台中记录它时。

如何分配此范围变量&#34; $ scope.sourceCodeMap&#34; (实际上是一个json自身对象数组)到新属性&#34; sourceCdMap&#34;在Json Array&#34; $ scope.searchList&#34;

1 个答案:

答案 0 :(得分:0)

尝试在此功能中登录

function (reason) {
            $scope.sourceCodeMap = null;
            //log error
        }

看看你的 $ scope.sourceCodeMap 是否总是因为它而为空。

如果情况并非如此,请尝试使用 $ scope.apply(); ,以便html可以看到您的更改。小心异步调用它。