0

グローバル名前空間で宣言された関数を Riot.js の式から呼び出そうとしています。

これは動作しません:

<strong>Created { getDateString(item.created) } by { item.creator }</strong>

(moment.js から)グローバル関数を呼び出すことができます。moment()

<strong>Created { moment(item.created) } by { item.creator }</strong>

この関数を含む JavaScript ファイル全体読み込まれます...そこから getDateString() を呼び出すと、次のように機能this.on('mount')します。

this.on('mount', function() {
    getDateString(new Date());
});

名前空間が Riot.js でどのように機能するかをよく理解していないため、式では getDateString() の呼び出しが失敗し、マウント関数では成功する理由がわかりません。誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

4

あなたglobalFunction()がグローバルで宣言されていることを確認してください。<script>タグ定義内のタグのスコープはグローバルではありません。気をつけてください。

<my-tag>
  <p>{ someGlobalFunction(message) }</p><!-- will work -->
  <p>{ localFunction1(message) }</p><!-- won't work -->
  <p>{ localFunction2(message) }</p><!-- will work -->
  <p>{ localFunction3(message) }</p><!-- will work -->

  <script>
    this.message = 'world'

    // Not reachable from the template
    function localFunction1 (arg) {
      return 'Hello ' + arg + '!'
    }

    // Reachable because this is the same as localFunction3
    localFunction2 (arg) {
      return 'Hello ' + arg + '!'
    }

    // Reachable from the template
    this.localFunction3 = function(arg) {
      return 'Hello ' + arg + '!'
    }.bind(this)
  </script>
</my-tag>
于 2015-08-31T21:12:04.323 に答える