繁体   English   中英

对AngularJS中的数据绑定的怀疑

[英]Doubts about data binding in AngularJS

我正在通过第一个应用程序学习AngularJS。 到目前为止,一切正常,我很兴奋:)

但是现在我有了一个console.log,这完全使我感到困惑,并且我开始认为我已经完全错过了一些东西。

我有一个绑定到控制器的简单标签:

<h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'>
    {{titleForSection()}}
</h2>

控制器非常简单:

    uxctModule.controller ('HeaderController', function ($scope, ModelData){
    $scope.data = ModelData;

    $scope.titleForSection = function () {
        console.log ("RETURNING IT");
        return ("I SHOULD RETURN YOU SOMETHING");
    }
});

真正让我感到困惑的是,我注意到每次模型中的某些变化时,都会触发该函数。 没有$ watch的情况下,控制器如何连续执行该功能?

角度数据绑定是通过摘要循环完成的,这意味着角度循环反复检查更改,对于绑定到该功能的功能,必须进行评估以寻找更改。

这就是将UI绑定到函数结果通常是个坏主意的原因。 相反,您应该执行以下操作:

标记:

<h2 ng-controller='HeaderController' ng-show='data.actualSection > 0'>
    {{sectionTitle}}
</h2>

控制器:

$scope.sectionTitle = 'I SHOULD RETURN YOU SOMETHING';
//and update it dynamically
$scope.funcToUpdateTitle = function(newTitle){
    $scope.sectionTitle = newTitle;
};

实际上,在angularJS中,与View相关的所有函数都将被调用,并且当以这种方式调用摘要循环时,因为您已经在HTML中调用了titleForSection() ,所以当HTML中发生事件时,该函数将被执行。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM