【问题标题】:how to get compiled nodeValue from an angular element如何从角度元素中获取编译的nodeValue
【发布时间】:2016-03-25 19:28:00
【问题描述】:

基本前提是我试图在编译后访问元素的 value 属性并将其复制到变量中。例如:如果 vm.datasource.data['+ i +'].HolidayName 编译为“Christmas”,我想获取该值并将其存储在变量中。

是否可以将编译后的值复制到变量中?

var link = function(scope, elem, attrs){

      setTimeout(function(){
        var checkboxCellArray = elem.find('.md-checkbox-cell');

        _.forOwn(checkboxCellArray, function(node, i) {
          if(angular.element(node).hasClass('md-checkbox-cell')){
            var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>')
            var compiled = $compile(element)(scope);

            setTimeout(function(){
              console.log(compiled);
            }, 500)
          }
        });
      }, 1000)
    }

【问题讨论】:

    标签: javascript angularjs dom compilation directive


    【解决方案1】:

    似乎经过数小时的辛勤工作,我在发布后 5 分钟找到了解决方案......

    编译后只需添加scope.$apply(),变量就会有更新的值。

    【讨论】:

    • 请看下面的答案,以获得更好的方法
    【解决方案2】:

    真正的问题是您使用setTimeout 函数并从中更新角度的东西。 setTimeout 从外部角度世界修改角度范围的异步事件不会使角度摘要系统运行摘要循环。您必须手动启动它才能更新 HTML 页面上的绑定。使用$timeout 代替setTimeout 可以轻松解决此问题,后者在setTimeout 中运行您的函数,然后将运行摘要循环。

    代码

    $timeout(function(){
        var checkboxCellArray = elem.find('.md-checkbox-cell');
    
        _.forOwn(checkboxCellArray, function(node, i) {
          if(angular.element(node).hasClass('md-checkbox-cell')){
            var element = angular.element('<p value="{{vm.selected.length}} checked. {{vm.headers[0].orderBy}}. {{vm.datasource.data['+ i +'].HolidayName}}. {{vm.headers[1].orderBy}}. {{vm.datasource.data['+ i +'].Country}}"></p>')
            var compiled = $compile(element)(scope);
    
            $timeout(function(){
              console.log(compiled);
            }, 500)
          }
        });
      }, 1000)
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 2019-07-06
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2017-06-02
      • 2020-10-12
      相关资源
      最近更新 更多