2014-10-27 42 views
1

我的主J​​son对象是一个作业,附加到它是ChangeOrders,PurchaseOrders,JobItems等....我无法访问JobItems。我已经安装了一个plunkr,但是它的问题是我不知道如何重新创建Json结构,因此它实际上正在工作。该方式plunkr是设置是怎样访问ChangeOrders,这让我在阵列中的所有对象:如何访问JSON数据与Angular

typeahead="c.ChangeOrders[0].COName for c in jobArray 

然而,当我使用这个我JobItems我只访问Array中的第一个JobItem。 plunkr

<input class="form-control input-md" style="width:200px" type="text" ng-model="jobItem.JobItemName" 
    typeahead="jobItem.JobItems[0].JobItemName for jobItem in jobArray | filter:$viewValue" 
    typeahead-on-select="selectJobItem($item)" ng-enter="addRecord()" placeholder="Job Items"> 

JSON

更新

//GET Jobs 
$scope.jobArray = {}; 
JobGet.query().then(function (data) { 
    $scope.jobArray = data; 
}, function (reason) { 
    errorMngrSvc.handleError(reason); 
}); 
app.factory('JobGet', function ($http, $q) { 
    return { 
    query: function() { 
     var deferred = $q.defer(); 
     $http({ method: 'get', url: '/api/apiJob' }) 
       .success(function (data) { 
        deferred.resolve(data); 
       }).error(function (error) { 
        deferred.reject(error); 
       }); 
     return deferred.promise; 
     } 
    } 
}); 

JSON

index.html:177 881 52 
jobController.js:173 Object {$id: "1", JobId: 2, JobNumber: 3244, JobName: "Job Alpha",  JobDescription: null…}$$hashKey: "00G"$id: "1"ChangeOrders: Array[0]Customer: "Twin Peaks"CustomerEmployeeAccountant: nullCustomerEmployeeAdmin: nullCustomerEmployeePM: nullCustomerEmployeeSuperintendent: nullGeoArea: "GeoArea Bravo"JobAddress: nullJobBalanceDue: nullJobBalanceToBill: nullJobBillingDate: nullJobBillingForm: nullJobCertPayroll: trueJobCity: nullJobClass: "JobClass Alpha"JobContractDate: "2014-08-02T00:00:00"JobCost: nullJobCounty: nullJobDescription: nullJobFaxNumber: 8325478866JobId: 2JobInsProgram: "RCIP"JobIsHidden: nullJobItems: Array[5]0: Object$id: "2"Job: nullJobId: 2JobItemAmount: nullJobItemBackOrder: nullJobItemDescription: "Alpha"JobItemId: 1JobItemIsHidden: nullJobItemMatSize: nullJobItemMultiplier: nullJobItemName: "Item Alpha"JobItemNotes: nullJobItemPrice: nullJobItemQuantity: nullJobItemSection: nullJobItemUOM: null__proto__: Object1: Object$id: "3"Job: nullJobId: 2JobItemAmount: nullJobItemBackOrder: nullJobItemDescription: "Bravo"JobItemId: 2JobItemIsHidden: nullJobItemMatSize: nullJobItemMultiplier: nullJobItemName: "Item Bravo"JobItemNotes: nullJobItemPrice: nullJobItemQuantity: nullJobItemSection: nullJobItemUOM: null__proto__: Object2: Object$id: "4"Job: nullJobId: 2JobItemAmount: nullJobItemBackOrder: nullJobItemDescription: "Charlie"JobItemId: 3JobItemIsHidden: nullJobItemMatSize: nullJobItemMultiplier: nullJobItemName: "Item Charlie"JobItemNotes: nullJobItemPrice: nullJobItemQuantity: nullJobItemSection: nullJobItemUOM: null__proto__: Object3: Object$id: "5"Job: nullJobId: 2JobItemAmount: nullJobItemBackOrder: nullJobItemDescription: "Delta"JobItemId: 4JobItemIsHidden: nullJobItemMatSize: nullJobItemMultiplier: nullJobItemName: "Item Delta"JobItemNotes: nullJobItemPrice: nullJobItemQuantity: nullJobItemSection: nullJobItemUOM: null__proto__: Object__defineGetter__: function __defineGetter__() { [native code] }__defineSetter__: function __defineSetter__() { [native code] }__lookupGetter__: function __lookupGetter__() { [native code] }__lookupSetter__: function __lookupSetter__() { [native code] }constructor: function Object() { [native code] }hasOwnProperty: function hasOwnProperty() { [native code] }isPrototypeOf: function isPrototypeOf() { [native code] }propertyIsEnumerable: function propertyIsEnumerable() { [native code] }toLocaleString: function toLocaleString() { [native code] }toString: function toString() { [native code] }valueOf: function valueOf() { [native code] }get __proto__: function __proto__() { [native code] }set __proto__: function __proto__() { [native code] }4: Object$id: "6"Job: nullJobId: 2JobItemAmount: nullJobItemBackOrder: nullJobItemDescription: "Echo"JobItemId: 5JobItemIsHidden: nullJobItemMatSize: nullJobItemMultiplier: nullJobItemName: "Item Echo"JobItemNotes: nullJobItemPrice: nullJobItemQuantity: nullJobItemSection: nullJobItemUOM: null__proto__: Objectlength: 5__proto__: Array[0]JobMinWage: nullJobMoreShit: nullJobName: "Job Alpha"JobNumber: 3244JobOriginalBudget: 29706734.15JobOriginalContract: 34343443JobPaidToDate: nullJobPercentage: nullJobPhoneNumber: 7135698855JobProfit: nullJobRemainingBudget: nullJobRetainage: 10JobRevisedContract: 34949099JobState: nullJobStatus: "Active"JobTESPM: nullJobTESSuperintendent: nullJobTaxExempt: trueJobTotalBilled: nullJobTotalCO: 605656JobType: "JobType Alpha"JobZipcode: nullPurchaseOrders: Array[0]__proto__: Object 
+0

你可以提供你的控制器的代码,特别是如何填充和声明jobArray? – 2014-10-27 14:10:22

+0

是你在找什么? – texas697 2014-10-27 14:17:39

+0

任何想法任何人? – texas697 2014-10-27 20:27:44

回答

1

this东西是你在找什么?修改的

亮点(据我了解的问题)是:

// Accumulate all JonItems in one array which will be used in typeahead 
angular.forEach($scope.jobArray, function(job){ 
    angular.forEach(job.JobItems, function(item){ 
     $scope.allJobItems.push(item); 
    }); 
}); 

还要注意的预输入的变化:

typeahead="itemName as item.JobItemName for item in allJobItems | filter:$viewValue" 

同样的原则将适用于ChangeOrders和个PurchaseOrders 。还要注意更多JobItems被添加到每个项目,以便typeahead将适用于所有这些。

我希望事情能够清楚地回答这个问题,但如果这个问题仍然不清楚,那么请修改这个plunker并添加ChangeOrders和PurchaseOrders,让我知道你是否被卡住了。

+0

越来越当我在输入字段中输入内容时,控制台中出现错误消息。我试图找出为什么.. TypeError:无法读取属性'长度'未定义 在ui-bootstrap-tpls.js:3602 在wrappedCallback(angular.js:11573) 在wrappedCallback(angular.js:11573) 在scope. $ eval(angular.js:12702) at Scope。$ digest(angular.js:12514) at Scope。$ apply(angular.js:12806) at HTMLInputElement.listener (angular.js:17057) at HTMLInputElement.n.event.dispatch(jquery.js:4409) at HTMLInputElement.r.handle(jquery.js:4095) – texas697 2014-10-31 02:45:03

+0

向我展示一个带有错误的plunker。我相信它不是来自我在答案中的掠夺者。 – dmahapatro 2014-10-31 02:47:05

+0

它在我的电脑上。我要去看看发生了什么。 – texas697 2014-10-31 02:48:06