Angular.js指令

时间:2015-02-22 22:05:51

标签: javascript angularjs angularjs-directive

我试图将变量从控制器传递给指令属性值。我正在使用此指令https://github.com/siddii/angular-timer。我的代码看起来像这样

  <div ng-controller="transactionsController">
              <table class="table" data-row-style="rowStyle">
                <thead>
                <tr>
                  <th>Link to Transaction</th>
                  <th>Amount Invested</th>
                  <th>Payout Amount</th>
                  <th>Transaction Status</th>
                  <th>Time</th>
                </tr>
                </thead>
                <tbody>
                <tr ng-repeat="transaction in transactions">
                  <td><a href='https://blockchain.info/tx/{{transaction.input_transaction_hash}}'> {{transaction.input_transaction_hash}} </a></td>
                  <td> {{transaction.value/100000000}} </td>
                  <td> {{(transaction.value/100000000) * 1.2}} </td>  <!--TODO: Investment % shouldn't be hardcoded -->
                  <td class='red' ng-if="transaction.confirmations < 6 || transaction.confirmations == null">unconfirmed</td>
                  <td class='green' ng-if="transaction.confirmations >= 6">confirmed</td>
                  <!-- <td>{{transaction.date}}</td> -->
                  <td><timer end-time="{{transaction.date}}">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer><td>
                </tr>
              </tbody>
              </table>
            </div>
        </div>

transaction.date来自与指令不同的控制器,是一个字符串格式的日期,以毫秒为单位。您还可以在此处查看该指令的示例。 http://siddii.github.io/angular-timer/

我在timer指令中使用transaction.date时遇到错误。

1 个答案:

答案 0 :(得分:1)

所以看来主要问题是控制器之间的通信。

这更像是一个结构性问题,可以追溯到您从根本上决定如何组织应用程序。

控制器之间进行通信的一个重要目标是整合服务或工厂中的所有数据(如果您不熟悉服务,Google可以使用Angular API中的文档)。

您可以将所有相关数据保存在一个小包(服务或工厂)中,这可以从多个来源中提取数据。然后,在您的控制器中,您只需将服务作为参数传递,并在控制器中创建服务的新实例。

您也可以考虑使用广播或发射函数(请参阅Angular API),这些函数在节点树的上方或下方全局广播数据,并且您的控制器可以“抓取”数据并使用它,而与源无关。 / p>