4

我正在创建一个类似于乘法表的表:http: //www.eco-pros.com/images/ClipArt-Graphics/multiplication-table.gif进行一些评估。

数据将通过使用 Restangular 的 REST 调用来自 API 资源。这是 REST 调用后控制器的代码:

getEvaluations.getList("evaluations?searchBy[participant]=880b6fb0-ee34-11e2-a62e-19e0bcac9427").then(function(data){
    evals = data["_embedded"]["items"];

    for (i = 0; i < evals.length; i++){
        allEvals.push({
            rating: evals[i].rating,
            alternative: evals[i]["_embedded"]["alternative"].name,
            criterion: evals[i]["_embedded"]["criterion"].name
        }); 
        /* I'm creating an array of objects to parse the data that comes from the
           resource because the back-end is a bit messy. */

    }
    console.log(allEvals);
    $scope.evaluations = {
        eval: allEvals
    };
    $scope.projectID = $routeParams["projectID"];
}, function error (err){
    alert("Error in fetching resource");
    console.log("error");
});

在视图中,我有一张我不知道如何填满的桌子。

<table>
        <thead>
          <tr>
            <th></th>
            <th data-ng-repeat="alternative in alternatives">{{alternative.name}}</th>
          </tr>
        </thead>
        <tbody>
          <tr data-ng-repeat="criterion in criteria">
            <td><b>{{criterion.description}}</b></td>
            <td><input type="text" value="{{evaluations.rating}}" /></td>
            <td><input type="text" /></td>
            <td><input type="text" /></td>
          </tr>
        </tbody>
    </table>

这是表的旧代码,我使用两个 REST 调用来获取替代名称和条件名称来填充表。但我希望能够使用我创建的对象数组来填充它。在输入框中,我希望评级能够匹配特定的替代方案和标准(因此我需要条件语句之类的东西来检查 AA 或 AB 或 AC 等并为此注入值)。

例如:

  A1

C1 5.0

任何提示或帮助将不胜感激!谢谢你。我不确定如何使这个问题更清楚,因为它是如此不同。

JS小提琴(不工作):

http://jsfiddle.net/GkxeP/8/

4

1 回答 1

1

最终结果:

http://jsfiddle.net/yUwXc/1/


我对你想要做什么有点困惑,确切地说,但这是我对你的小提琴所做的:

  1. onLoad改为No wrap - in <body>.

  2. 您在框架中有角度的外部资源和角度 - 这导致了问题。所以我拿出了外部资源。

  3. 在您的控制器中,声明了一个在作用域上调用的对象,该对象evaluations具有一个名为eval. 但是,在您看来,您尝试调用rating. evaluations您的数据不是这样的结构。看起来您希望列中的替代项和行中的标准,因此我们需要将您的数据以某种格式放置,以便可以以这种方式对其进行索引。有列的行是常规的,所以我将按标准对数据进行索引,然后再进行替代。为此,我写了以下内容:

    $scope.evaluations = {};
    for (var i = 0; i < allEvals.length; i++) {
        if (!$scope.evaluations.hasOwnProperty(allEvals[i].criterion)) {
            $scope.evaluations[allEvals[i].criterion] = {};
        }
    
        $scope.evaluations[allEvals[i].criterion][allEvals[i].alternative] = allEvals[i].rating;
    }
    

然后在你看来:

<input id="#{{alternative.id}}" type="text" value="{{evaluations[criterion.name][alternative.name]}}" />

如果您需要更多帮助,请告诉我:)

于 2013-08-26T02:10:47.307 回答