角度ng-如果没有按预期响应

时间:2015-11-25 04:51:07

标签: javascript html angularjs checkbox

我有li个元素,其ng-if语句与复选框相关联。如果我实际选中该复选框,ng-if会按预期响应。但是,如果我通过JavaScript选中或取消选中该复选框,则会按预期选中或取消选中复选框,但ng-if不响应。这是否正常工作?有更好的方法吗?

以下是我的代码示例:" []" ="<>"

HTML - 第1部分

[li id =" homebutton" ng-if =" homechecked!= true" onclick =" homeclicked()"] [a ng-href =" /"] [img src =" images \ Neck01Home.png" ALT ="首页" /] [/ A]

[li id =" thebandbutton" NG-IF =" homechecked ===真" onclick =" thebandclicked()"] [a ng-href =" / theband /"] [img src =" images \ Neck01TheBand.png" alt ="乐队" /] [/ A]

HTML - 第2部分

[label class =" menucontroller"] Home2:[input class =" menucontroller" ID =" homecb"类型="复选框" NG-模型=" homechecked" NG-INIT =" homechecked =真" /] [/ label] [br /]

[label class =" menucontroller"] TheBand2:[input class =" menucontroller" ID =" bandcb"类型="复选框" NG-模型=" thebandchecked" /] [/拉贝] [

[label class =" menucontroller"] Gallery2:[输入类=" menucontroller" ID =" gallerycb"类型="复选框" NG-模型=" gallerychecked" /] [/ label] [br /]

的JavaScript

window.onload = function () {
}

function homeclicked() {
    document.getElementById('homecb').checked = true;
    document.getElementById('bandcb').checked = false;
    document.getElementById('gallerycb').checked = false;
}

function thebandclicked() {
    document.getElementById('homecb').checked = false;
    document.getElementById('bandcb').checked = true;
    document.getElementById('gallerycb').checked = false;
}

function galleryclicked() {
    document.getElementById('homecb').checked = false;
    document.getElementById('bandcb').checked = false;
    document.getElementById('gallerycb').checked = true
}

3 个答案:

答案 0 :(得分:1)

你做错了,read_imagei没有触发,因为你只操纵选中和未选中的复选框(使用javascript)而不是ng-model,不要尝试使用javascript来做而是在角度控制器上进行。

控制器:

ng-if

ng-model on复选框输入处理选中和取消选中它,还有一个本机指令https://docs.angularjs.org/api/ng/directive/ngChecked用于处理检查和取消选中。

答案 1 :(得分:0)

以适当的角度方式做。

移动控制器内的功能。通过WebWiew致电他们。让函数更改绑定到复选框的范围变量。

ng-click

在你的范围内的平均时间......

<li id="homebutton" ng-if="homechecked != true" ng-click="homeclicked()">

如果你真的想忽视我的建议并继续你所拥有的东西,这非常糟糕,你可以在你的函数中添加这一行:angular.element(document.getElementById('homecb “))$范围()$适用于()。;这又是非常糟糕的,应该完全避免。

答案 2 :(得分:-1)

使用

 <?php } else if (($_SESSION['Usertype']) == 'recruiter') { ?>
    <table class="table table-hover">
        <?php
            $u_id = $_SESSION['UserID'];
            $notifyR = " SELECT bidid, recbid_id, bidder_id, selected, accept FROM tbl_bides WHERE recbid_id  = '" . $u_id . "'";

            $ResultR = mysql_query($notifyR, $con);

            while ($rowR = mysql_fetch_array($ResultR)) {
                if ($rowR['accept'] == "Accepted") {
                    echo "<h3 style='color:#001F7A;'><b>You Have Updates </b><i class='fa fa-bell-o'></i></h3>";
                    echo $rowR['bidder_id'];
                }

                $recR = "SELECT users_id, first_name, last_name  FROM tbl_users WHERE users_id = '" . $rowR['bidder_id'] . "'";
                $recResultB = mysql_query($recR, $con)or die(mysql_error());

                while ($rowre = mysql_fetch_array($recResultB)) {
                    echo " <tr><td>" . $rowre['first_name'] . " " . $rowre['last_name'] . "</td></tr>";

                }
            }
        ?>

它将运行摘要循环,你的ng-if将按预期工作。