在角度控制器

时间:2016-03-31 19:28:39

标签: javascript arrays angularjs

我对需要发生的事情有基本的了解,但我不确定如何实际实现它。我在控制器中有一个GET调用( getTest ),它返回一个对象数组。目前在我看来,我正在通过 ng-repeat 指令运行数组,以显示所有内容,并使用 ng-if 指令调用的完整列表来显示某些图标,具体取决于价值。

虽然这个解决方案有效,但感觉有点笨拙。所以我想要做的是让控制器本身查看数组中每个对象的相关属性值,并将新属性和值推送到具有我想要的图标名称的对象中。

这是我的测试控制器:

(function() {
    'use strict';

    angular.module('testApp').controller('TestController', TestController);

    function TestController(TestFactory, $state, $stateParams) {
        var vm = this;
        var searchID = $stateParams.id;
        vm.state = $state.current;
        vm.params = $stateParams;

        init();

        function init() {
            vm.testData = {};
            getTest();
        }

        function getTest() {
            TestFactory.getTestData(searchID).then(
                function(response) {
                    vm.testData = response;
                })
        }
    }

})();

如果我只处理1个对象,我只需要 getTest 函数通过IF / ELSE查看响应对象并将结果转储到新的变量,但我如何用一整套对象来解决这个问题呢?我假设需要FOREACH来运行数组,但是如何在不破坏对象中的其他值的情况下将属性和值插入到对象中?

以下是数组现在的基本情况:

[
   {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
   },
   {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
   },
   {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
   }
]

这就是我希望它完成后的样子:

[
    {
        key1: "value1",
        key2: "value2",
        key3: "value3",
        newKey: "newValue"
    },
    {
        key1: "value1",
        key2: "value2",
        key3: "value3",
        newKey: "newValue"
    },
    {
        key1: "value1",
        key2: "value2",
        key3: "value3",
        newKey: "newValue"
    },
]

1 个答案:

答案 0 :(得分:1)

尝试team-member-text

jQuery( ".team-member" ).click(function() {
    jQuery('.team-member-text').not(this).hide();  //hide everything that isn't this one
    jQuery(this).find(".team-member-text").show( "slow", function() { 
       //toggle this one
    }); 
});

它将在数组中的每个对象中创建新属性,而不会破坏任何对象。

希望它有所帮助。