0

AngularJS APPAngularJS:私は、条件を書くべきリロールボタン(reloadRoute ??)と結合する2ウェイデータに関数を適用する

私は、私は無限のダイジェストループのこの問題を解決することができる方法を理解したいと思います?

目的は、angleの2-wayデータバインディングを使用することですが、ランダムに文字を並べ替えるために出力を変更する必要があります。

マイHTML:

   <div class="container-fluid phrase-container text-center"> 
       <!-- == User Phrase Input == --> 
       <input type = "text" ng-model = "phrase.firstPhrase" placeholder="Please enter phrase"><br><br> 
      </div> 

       <div class="container-fluid anagram-container text-center"> 
       <!-- == Final anagram == --> 
       Anagram: {{phrase.fullAnagram()}} 
      </div> 

私のjavascript:スコープモデルの

var app = angular.module("app", []); 

    app.controller('mainController', function($scope) { 
    $scope.main = {}; 
    $scope.main.title = "AnagramJS"; 

// Refresh Page acts as reroll button 
$scope.reloadRoute = function() { 
    $route.reload(); 
}; 

// Anagram Creation 
$scope.phrase = { 
    firstPhrase: "", 
    fullAnagram: function() { 
     var finalPhrase; 
     finalPhrase = this.firstPhrase.split('').sort(function() { 
      return 0.5 - Math.random() 
     }).join(''); 

     return finalPhrase 

    } 
}; 
    }); 
+0

どのように私は再び言葉を訴えるでしょうリロールボタンを追加することができますか?別のアナグラムのため – FreshOceans

答えて

0

シンプル$時計が正常に動作するようですので、あなたが使用することができます

<input ng-model="word" type="text"/> 
<p> 
    {{anagram}} 
</p> 

とJSで:

$scope.$watch('word', (newVal, oldVal) => { 
if (newVal) { 
    // set anagram to randomize 
    $scope.anagram = newVal.split('').sort(function() { 
    return 0.5 - Math.random() 
    }).join(''); 
} else { 
    // empty anagram if word is empty 
    $scope.anagram = ""; 
} 
}); 

あなたはそれがこのフィドルでどのように機能するかを確認することができます。https://fiddle.jshell.net/pegla/kemrr0ka/4/

をUPDATE:リロールボタンのルーティングを使用する必要はありません

、あなたは、単に関数を作成し、複数回呼び出すことができ、私は1つの方法を追加私の最新のバイオリンでそれをやって:

https://fiddle.jshell.net/kemrr0ka/5/

+0

ありがとう、それは働いた。私はそれが$ scopeとは関係があることを知っていましたが、$ watchは使用方法を完全には理解していませんでした。 – FreshOceans

+0

将来の参照に問題はありません。$ scope。$ watchを使用して、$ scopeプロパティの変更を監視します。あなたの場合は$ scope.wordです - $ scopeプロパティの変更を見ているので、前に$ scopeを指定していません - newValは変更された新しい値(word)を含み、oldValは変更前の 'word'の古い値になります。 – pegla

+0

変更後、リロールボタンが正しく機能しません。私はなぜ、私は問題を得るのか分からない:$ルートは定義されていません。ライブで自分のプロジェクトを更新しました。私はルートをリロードしようとしていると信じています。 – FreshOceans

関連する問題