簡體   English   中英

來自后端的JSON值的動態模型名稱

[英]Dynamic model name on the JSON value from the Backend

我有一個來自后端的Json,如下所示:

var infoArray = [
        {
            "field" : "text",
            "placeholder" : "Name",
            "modelName" : "userName"
        },{
            "field" : "date",
            "placeholder" : "DOB",
            "modelName" : "userDob" 
        },{
            "field" : "text",
            "placeholder" : "Location",
            "modelName" : "userLocation"
        }
    ]; 

它已設置為最多可以有10個文本字段和4個日期字段。

由於ModelName來自后端所以我試圖把它放在簡單的ng-repeat中,但這似乎不起作用 這里是Plnkr Link

事實上,我自己找到了一個解決方案,代碼似乎很笨重。

這是plnkr Link

還有一件事我需要考慮的是,我必須使用modelName從用戶獲取值,然后將其發回。

任何人都可以建議優化的解決方案或修改我的代碼。 謝謝 !

你試過的幾乎是正確的。 只需要刪除ng-model中的花括號

 <div ng-repeat="info in infoArray">
       <input type="{{info.field}}" placeholder="{{info.placeholder}}" ng-model="info.modelName" ng-init="callFunc(info)" /> 
 </div>

演示


您可以通過以下方式執行此操作:

 var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope) { $scope.answers={}; $scope.infoArray = [ { "field" : "text", "placeholder" : "Name", "modelName" : "userName" },{ "field" : "date", "placeholder" : "DOB", "modelName" : "userDob" },{ "field" : "text", "placeholder" : "Location", "modelName" : "userLocation" } ]; $scope.print=function(){ console.log(answers); } }); 
 <!DOCTYPE html> <html ng-app="plunker"> <head> <meta charset="utf-8" /> <title>AngularJS Plunker</title> <script>document.write('<base href="' + document.location + '" />');</script> <link rel="stylesheet" href="style.css" /> <script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.20/angular.js" data-semver="1.3.20"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> <div ng-repeat="info in infoArray"> <input type="{{info.field}}" placeholder="{{info.placeholder}}" ng-model="answers[info.modelName]"/> </div> <button ng-click="print()">Print</button> {{answers.userName}} {{answers.userDob}} {{answers.userLocation}} </body> </html> 

從ng-model中刪除花括號,並在javascript文件中創建一個新對象,就像在我的示例中我創建了一個answers對象。 並在ng-model中使用這種方式:`

   <input type="{{info.field}}" placeholder="{{info.placeholder}}" ng-model="answers[info.modelName]"/> 

`現在,如果您想訪問模型值,那么您可以這樣做:

   {{answers.userName}}
   {{answers.userDob}}
   {{answers.userLocation}}

希望,這解決了你的問題。 謝謝 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM