Angular:将项目推送到列表不会更新视图

时间:2013-05-16 14:10:42

标签: javascript angularjs

当我将项目推送到数组时,视图不会刷新列表。

表:

<tbody id="productRows">
    <tr data-ng-repeat="product in products | filter: search">
        <td>{{ product.Code}}</td>
        <td colspan="8">{{ product.Name}}</td>
    </tr>
</tbody>

形式:

<form data-ng-submit="submitProduct()">
    Code:
    <br />
    <input type="text" required data-ng-model="product.Code"/>
    <br />
    <br />
    Naam:
    <br />
    <input type="text" required data-ng-model="product.Name"/>
    <br />
    <input type="submit" value="Opslaan" />
</form>

控制器中的submitProduct:

$scope.submitProduct = function () {
    console.log('before: ' + $scope.products.length);

    $scope.products.push({Code: $scope.product.Code, Name: $scope.product.Name});
    console.log('after:' + $scope.products.length);
    console.log($scope.products);

    $scope.showOverlay = false;
};

正如您所看到的,我记录了数组中的总项目,它的行为与我期望的一样。唯一没有做到我期望的是我的表的内容,它没有显示新值。

我该怎么办,所以表格中会显示新行?

2 个答案:

答案 0 :(得分:5)

我无法看到您的其余代码,但请确保您的控制器中已定义$scope.products

请参阅此example

我对您提供的代码的唯一补充是:

$scope.products = [];

如果这没有用,请提供更多信息。

答案 1 :(得分:5)

感谢您的回答和评论。问题发生在另一个地方。在我routeProvider我宣布了一个控制器。我的div中也有一个ng-controller指令。所以我的控制器执行两次。当我删除ng-controller指令时,一切都正常工作:)