Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angulars链接功能何时运行?_Angularjs - Fatal编程技术网

Angularjs Angulars链接功能何时运行?

Angularjs Angulars链接功能何时运行?,angularjs,Angularjs,据我所知,在呈现页面之前,它只运行一次。但是,是否有过这样的情况,即它在呈现页面之后运行 我试着用这个测试了一些东西: angular .module('应用程序',[]) .directive('test',函数($http){ 返回{ 限制:'E', 模板:“”, 链接:功能(范围、el、属性){ var input=angular.element(el[0].子元素[0]); input.on('change',function(){ console.log(“更改事件”); 作用域$ap

据我所知,在呈现页面之前,它只运行一次。但是,是否有过这样的情况,即它在呈现页面之后运行

我试着用这个测试了一些东西:

angular
.module('应用程序',[])
.directive('test',函数($http){
返回{
限制:'E',
模板:“”,
链接:功能(范围、el、属性){
var input=angular.element(el[0].子元素[0]);
input.on('change',function(){
console.log(“更改事件”);
作用域$apply(函数(){
console.log(“摘要周期”);
});
});
input.on('keyup',function(){
console.log(“keyup事件”);
变量根http://jsonplaceholder.typicode.com';
$http.get(root+/users)
.success(函数(){
log(“http请求成功”);
})
.错误(函数(){
log('http请求错误');
});
});
log(“链接函数运行”);
}
};
});
  • 在输入字段中键入是否会导致链接功能运行
  • 事件侦听器是否导致链接函数运行
  • http请求(使用
    $http
    ?)是否会导致链接功能运行
  • 摘要循环是否导致链接功能运行

  • 所有这些问题的答案似乎都是“否”。编译指令实例时,即创建
    元素时,
    链接
    函数运行。当angular的引导编译页面时,当它从
    ng if
    生成时,当
    ng repeat
    生成时,当它使用
    $compile
    生成时,等等


    link
    不会对同一指令实例触发两次。值得注意的是,它在指令的生命周期中编译模板后立即触发。

    在编译指令的实例时,即在创建
    元素时,
    链接
    函数运行。当angular的引导编译页面时,当它从
    ng if
    生成时,当
    ng repeat
    生成时,当它使用
    $compile
    生成时,等等


    link
    不会对同一指令实例触发两次。值得注意的是,它会在指令生命周期中编译模板后立即触发。

    1-否,它会导致更改唯一绑定的ng模型

    2-否,它只会在事件绑定内启动代码

    3-同样是否,事件绑定将启动
    $http.get()
    。请不要在指令上直接添加$http。使用
    工厂
    或类似的工具

    4-邓诺

    正如Dylan Watt所说,指令
    link
    仅在每个元素/attr对指令进行编译(仅一次)时运行。。。。您可以用不同的方式编译它。普通http,
    $compile
    ng repeat

    您可以在指令中创建$watch,以“重新启动”绑定元素更改上的某些代码


    这可能会对您有所帮助:

    1-否,它会导致更改唯一绑定的ng模型

    2-否,它只会在事件绑定内启动代码

    3-同样是否,事件绑定将启动
    $http.get()
    。请不要在指令上直接添加$http。使用
    工厂
    或类似的工具

    4-邓诺

    正如Dylan Watt所说,指令
    link
    仅在每个元素/attr对指令进行编译(仅一次)时运行。。。。您可以用不同的方式编译它。普通http,
    $compile
    ng repeat

    您可以在指令中创建$watch,以“重新启动”绑定元素更改上的某些代码


    这可能会对您有所帮助:

    “链接函数对模板的每个实例化执行一次。”——“链接函数对模板的每个实例化执行一次。”——。谢谢。我这样做是为了演示
    ng repeat
    场景。没问题。你想让我在plnkr中看些什么,或者仅仅是为了启发?不是特别的,只是觉得这可能是一个有用的演示。谢谢。我这样做是为了演示
    ng repeat
    场景。没问题。你想让我在plnkr中看些什么,或者仅仅是为了启发?不是特别的,只是想作为一个演示可能有用。
    angular
      .module('app', [])
      .directive('test', function($http) {
        return {
          restrict: 'E',
          template: '<input />',
          link: function(scope, el, attrs) {
            var input = angular.element(el[0].children[0]);
            input.on('change', function() {
              console.log('change event');
              scope.$apply(function() {
                console.log('digest cycle');
              });
            });
            input.on('keyup', function() {
              console.log('keyup event');
              var root = 'http://jsonplaceholder.typicode.com';
              $http.get(root+'/users')
                .success(function() {
                  console.log('http request successful');
                })
                .error(function() {
                  console.log('http request error');
                });
            });
            console.log('link function run');
          }
        };
      });