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

标签 javascript angularjs

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

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/

相关文章:

angularjs - 我如何获取有关谁更改了我在 watch 中设置的变量的信息( Angular )

javascript - 单击同一按钮提交并返回

javascript - 在 iMacros 中使用 EVAL 和 REGEX 提取字符

javascript - 使用 JQuery 统计博客文章中的所有单词

javascript - 无法在if陈述式中定义声音

javascript - ( Canvas )每隔几秒推送一个新项目

javascript - 将 2014 年 3 月 25 日的日期格式设置为数字

javascript - 无法使用 Angular.js/Javascript 比较日期

angularjs - AngularJS 中按多个特定模型属性进行过滤(OR 关系)

javascript - Angular JS 数据表 - 字母数字排序