角度ui绑定问题

时间:2014-02-07 16:18:03

标签: angularjs

我正试图将一个迟到的计算字段绑定到我的ui而没有太大的成功,这是我的控制器 -

PaymentsController = ['$scope', 'Payment','Campaign', ($scope, Payment,Campaign)->
Payment.query().then((payments) ->
$scope.payments = payments
angular.forEach($scope.payments,(payment,index)->
  payment.from = $scope.getFrom(payment)
)

概念很简单,但方法getFrom返回一个promise,当我到达这个控制器时我加载一个列表,ui看起来像这样:

<table>
                <tr>
                    <th ng-bind="'from'|i18n"></th>
                    <th ng-bind="'amount'|i18n"></th>
                    <th ng-bind="'to'|i18n"></th>
                    <th ng-bind="'description'|i18n"></th>
                </tr>
                <tr ng-repeat="payment in payments">
                    <td ng-bind="payment.from"></td>
                    <td>{{getAmount(payment)}}</td>
                    <td>{{getTo(payment)}}</td>
                    <td>{{getDescription(payment)}}</td>
                </tr>
                <tr ng-show="!payments.length">
                    <td ng-bind="'no_payments'|i18n"></td>
                </tr>
            </table>
什么都没有, 除了from之外,所有字段都按预期绑定,根据控制器我希望看到“asd” 但我什么都没看到。

我需要在此方法中返回一个promise,但首先我要尝试使用简单的代码。

1 个答案:

答案 0 :(得分:0)

我的问题更具概念性我想,我设法通过让控制器控制视图而不是控制控制器的视图来解决这个问题,所以我没有为“from”字段分配承诺,而是在有一个值,所以我的代码看起来像这样:

  angular.forEach($scope.payments, (payment, index)->
    $scope.resolveFrom(payment)
  )

$scope.resolveFrom = (payment)->
  if payment.amount < 0
    payment.from = "1"
  else if payment.campaign_id
    Campaign.get(payment.campaign_id)
    .then((campaign)->
            payment.from = campaign.name)))

  payment.from = "unkown"

我不确定这是否是最佳做法,会赞赏评论/替代解决方案。