gpt4 book ai didi

javascript - 使用数组制作 Angular JS 的通用代码

转载 作者:行者123 更新时间:2023-12-03 07:45:38 25 4
gpt4 key购买 nike

我正在尝试制作一个通用代码,以简单的方式实现下一个级别的目的。请找到我制作的注释代码。但是,它不起作用。

var app = angular.module('myApp', []);

app.factory('mainFactory',function($http){
return {
getData: function() {
return $http.get("data.json");
}
};
});

app.controller('mainCtrl', function($scope,$http,mainFactory){
var data = mainFactory.getData();
if(angular.isDefined(data)) {
data.success(function(d,s){
// I want this commented out code for the four lines defined below.
/*var a = [{name:"imagesArray"},{name:"taskArray"},{name:"courseArray"},{name:"newsArray"}];
for(var i = 0; i < a.length; i++) {
$scope.a[i].name = d.a[i].name ? d.a[i].name : [];
}*/

// I dont want this number of lines.
$scope.imagesArray = d.imagesArray ? d.imagesArray : [];
$scope.taskArray = d.taskArray ? d.taskArray : [];
$scope.courseArray = d.courseArray ? d.courseArray : [];
$scope.newsArray = d.newsArray ? d.newsArray : [];
});
}
});

如果可以进一步简化,请告诉我

最佳答案

您可以使用它来更好地定义范围属性,编辑您的代码如下:

data.success(function(d,s){
var keyCollection = ["imagesArray","taskArray","courseArray","newsArray"];

keyCollection.forEach(function(key){
$scope[key] = d[key];
});
});
<小时/>

或者如果你的项目也在使用lodash(或下划线)。你可以简单地这样做(进一步,不要仅仅因为这个就导入lodash或下划线,不需要成本):

// outside, create advance function
var advancePick = _.partialRight(_.pick, "imagesArray", "taskArray", "courseArray", "newsArray");

data.success(function(d,s){
// just beauty like this
_.extend($scope, advancePick(d));
});

关于javascript - 使用数组制作 Angular JS 的通用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com