将$ scope值传递给函数

时间:2016-07-02 07:33:06

标签: javascript angularjs

我不确定我是否正在努力做到最好(正确?)方式,但我在AngularJS页面中有一个文字游戏,玩家试图猜测一个单词。每个字母都由一个文本框表示,当玩家输入他们的猜测时,该字母将被传递给一个函数,该函数检查该字母是否正确并相应地更改该框的颜色。

到目前为止,我的部分文件中包含以下代码:

<p>Answer: {{selectedWord}}</p>

<div>
<input type="text" name="letters[]" class="answerbox" ng-repeat="guess in guesses" id="{{'letter_'+$index}}" ng-model="guess.value" onkeyup="testResults(this)" ng-focus="this.select();" size="1" maxlength="1">
</div>

这将获取输入并将其传递给我的函数,如下所示:

function testResults(letter) {
    var box_id = letter.id;

    var boxparts = box_id.split("_");
    var box_number = boxparts[1];

    var correct_answer = selectedWord(box_number-1, 1);
    var your_answer = letter.value;
    your_answer = your_answer.toLowerCase();

    if (your_answer == correct_answer) {
        letter.style.backgroundColor = "#32e53e";
    } else {letter.style.backgroundColor = "#ff6d6e"; }
                var is_correct = check_all();
    }

我无法做的是传递正确答案($scope.selectedWord)的值,以便我可以将其用作我的函数中的var correct_answer

我试过简单地用onkeyup="testResults(this, $scope.selectedWord)"和其他各种替代方法传递它,但这不起作用。

对于如何将此值传递给函数或者AngularJS提供更好的方法来实现我的目标,我会非常感兴趣。

2 个答案:

答案 0 :(得分:1)

一些快速提示:

  • 始终使用角度指令(ng-keyup)而非本机javascript(onkeyup),以使您的生活更轻松。
  • 您可以使用ng-repeat来&#34;迭代&#34;模板上的字符串。
  • 将您的ng-model设置为数组,这样您就不必捣乱ID和内容。如果要以绿色或红色突出显示输入,请使用ng-class

我为你做了一个小小提琴作为例子: http://jsfiddle.net/ManuKaracho/fwp41qd2/

答案 1 :(得分:0)

密钥的角度方式ng-keyup="testResults(guess.value)"