我的HTML多久调用一个函数?

时间:2016-03-28 12:18:00

标签: angularjs

我的HTML代码中包含此代码:

 <div >{{ getHint(us.q.hint) }}</div>

有人可以告诉我什么时候会调用这个函数吗?当us.q.hint改变值时,是多次调用还是只调用一次?

更新

我有几个答案,他们是不同的。有没有办法只在每次值改变时才能调用函数?

3 个答案:

答案 0 :(得分:3)

很多次。

在摘要周期的每次迭代期间评估插值({{ ... }}构造)。摘要周期发生在Angular处理的每个事件中,每个摘要周期可以有多次迭代。

插值在插值表达式上创建观察器。摘要循环遍历所有观察者并评估每个观察者以检测需要应用于视图的变化。摘要代码通过评估每个表达式并将其与先前的值进行比较来检测更改。这意味着在每个摘要周期中,每个观察到的表达式至少被评估/执行一次。

在您的情况下,插值表达式为getHint(us.q.hint)。在计算该表达式时,将调用$scope.getHint函数并传递$scope.us.q.hint的值。将getHint的返回值与之前的值进行比较,以确定它是否已更改。

所以你看,它不是被观察的$scope.us.q.hint的值,它是整个表达式的值。

查看有关interpolationswatchesthe digest cycle的更多信息。

更新更新

如果您希望仅在参数更改时调用函数,则可以进行两项更改:

  1. 创建一个值,该值将更改并在观察者中调用getHint
  2. 创建一个范围变量以保存getHint调用的结果并将其绑定到视图。
  3. 所以在你的控制器中(每个观察者至少被调用一次,这将初始化$scope.hint):

    $scope.$watch('us.q.hint', function () {
        $scope.hint = $scope.getHint($scope.us.q.hint);
    });
    

    在你看来:

    <div >{{ hint }}</div>
    

答案 1 :(得分:0)

这将被多次调用,因为你的html渲染或页面被刷新了很多时间,这将不依赖于

的值的变化
$servername = "localhost";
$username = "root";
$password = "";
$dbname="lamp";
$conn = new mysqli($servername,$username,$password,$dbname);
if ($conn->connect_error) 
{
    die("Connection failed: " . $conn->connect_error);
}
$contactno=mysqli_real_escape_string($conn,$_POST['contactno']);
$description=mysqli_real_escape_string($conn,$_POST['description']);
$email=mysqli_real_escape_string($conn,$_POST['contactemail']);

$subject=mysqli_real_escape_string($conn,$_POST['subject']);
$creationdate=mysqli_real_escape_string($conn,$_POST['creationdate']);
if(isset($_POST['status1']))
{
    $status =$_POST['status1'];
}
if(isset($_POST['noteid']))
{
    $id = mysqli_real_escape_string($conn,$_POST['noteid']);
}
$stmt=$conn->prepare("update notifications set subject=?,description=?
,status=?,  creationdate=?,contactno=?,contactemail=? where id=? ");               $stmt->bind_param("ssisisi",$subject,$description,$status,$creationdate,$contactno,$email,$id);
$stmt->execute();
$stmt->store_result();  
if($stmt->num_rows >0)
{
    echo "sucess";
    header("Location: updategovermentnotification.php");
}

答案 2 :(得分:-1)

是每次us.q.hint值更改它将在被观看时执行。