javascript - Rails/Angular JS : Ngclick not appearing to work

标签 javascript jquery ruby-on-rails angularjs

我正在我的 Rails 应用程序中创建一个简单的 Angular 应用程序来显示注册用户列表。最终的目标是循环遍历所有用户并随机选择一个用户,将其“获胜者”属性更新为“true”,并更新其姓名旁边的 DOM,或者可能显示获胜者的警报。

我创建了一个新的测试函数“showPool”来查看 ngClick 是否正常工作,但它似乎根本不起作用(即单击按钮,它们什么也不做)。谁能看到我可能缺少什么?

HTML:

<% if user_signed_in? && current_user.role == "Admin" %>

    <h1 class="center">Winner Raffler</h1>
    <h4 class="center">To select a winner for this year's scholarship, simply click "choose winner" below</h4>

    <div ng-controller="rafflerController"> 
        <ul>
            <li ng-repeat="user in users">
                {{"Applicant Name:" + " " + user.first_name + " " + user.last_name + " " + "Winner?" + user.winner}}
                <span ng-show="user.winner">Winner</span>
            </li>
        </ul>

    </div>
<button ng-click="drawWinner()">Draw Winner</button><br>
<button ng-click="showPool()">Show List of Potential Winners </button>
<% end %>

Javascript 文件:

//Pool of Winners
var pool = [];

var rafflerApp = angular.module('rafflerApp', ["ngResource"]);

rafflerApp.controller('rafflerController', function($scope, $resource) {
        User = $resource("/users.json", {id: "@id"}, {update: {method: "GET", isArray:true}})
        $scope.users = User.query()

        //Show User Pool List
        $scope.showPool = function() {
            if (pool.length === 0) {
                alert("There are currently no available users in pool.");
            } else {
                alert("There are currently" + pool.length + " potential winners in the user pool.");
            }
        }

        //Draw a New Winner
        $scope.drawWinner = function(){
            angular.forEach($scope.users,function(user){
                if(!user.winner){
                    pool.push(user) ;
                }
            });
            if(pool.length >0) {
                user = pool[Math.floor(Math.random()*pool.length)];
                user.winner = true;
                $scope.lastWinner = user;
            }
        }

});

最佳答案

您需要将按钮放置在您启动 rafflerController Controller 的 div 范围内:

  <div ng-controller="rafflerController"> 
    <ul>
        <li ng-repeat="user in users">
            {{"Applicant Name:" + " " + user.first_name + " " + user.last_name + " " + "Winner?" + user.winner}}
            <span ng-show="user.winner">Winner</span>
        </li>
    </ul>
//YOUR CODE GOES HERE INSTEAD
<button ng-click="drawWinner()">Draw Winner</button><br>
<button ng-click="showPool()">Show List of Potential Winners</button>

</div>

关于javascript - Rails/Angular JS : Ngclick not appearing to work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295840/

相关文章:

ruby-on-rails - AngularJS:将设计与多个模型一起使用

ruby-on-rails - 如果存在,我该如何按 id 查找,否则执行 find_or_initialize_by_columname(params[ :somevalue])

ruby-on-rails - Destroy_with_password 始终返回 false

javascript - 如何检测数据表插件中的右键单击

javascript - 在 Android+PhoneGap 中添加关于滚动的帖子

javascript - 单击时更改模态图像

javascript - 使用 cookie 加载、保存和重置 jquery 值

jquery - 如何动态创建/删除元素并允许模型绑定(bind)启动?

asp.net - 从 iFrame 重定向父窗口

javascript - 限制容器内可放置拖动项目的数量