如何在页面中呈现角度元素后调用JS函数?

时间:2015-10-13 15:38:02

标签: angularjs

我有以下div:

<div style="font-size:15px;"  class="title">
    <div>{{specialOffer.Name}}</div>
</div>

我需要在{{specialOffer.Name}}替换为其值后执行JS函数。对不起,我是一个Angular新手,试图解决现有代码上的一些错误。

我尝试了$(document).ready或window.onload,但是这些事件被解雇得太快了。

4 个答案:

答案 0 :(得分:2)

你可以这样做:它的一种可能性,在谈论渲染时,最好是在指令内部。

&#13;
&#13;
$(document).ready(function(){

    $("#service_category_selection").on('change', function(){
           $.ajax({
               url: "narrow_service_by_service_category_selection",
               type: "GET",
               data: {service_category_id: $(this).val()},
               success: function(data){
                   /* ... */
               }
           })
    });

});
&#13;
service category
&#13;
&#13;
&#13;

快乐帮助!

答案 1 :(得分:0)

尝试使用ng-init,请参阅

<div style="font-size:15px;"  class="title">
    <div ng-init="functionName(specialOffer.Name)">
       {{specialOffer.Name}}
    </div>
</div>

答案 2 :(得分:0)

这是一种方法。

$scope.$watch('specialOffer.Name', function(newVal, oldVal) {
  callYourFunction()
});

每次specialOffer.Name更改时,都会运行回调并更新DOM(意味着{{specialOffer.Name}}获得&#34;填写&#34;)。

但这有一种代码味道&#34;它。在不了解情境的情况下,我无法确定这是一种糟糕的方法,但我感到悲观。查看this以更好地了解数据绑定的工作原理。

答案 3 :(得分:0)

这是解决方案.Plese找到相同的。 这里的问题是通过使用angularjs指令post link解决的。

app.directive('afterRender', function () {
return {
    link: {
        post: function ($scope, elem, attr) {             
               $timeout(function () {
                  alert('Data was rendered'); 
               //  add your java script code               
              }, 0);
          }  
      }            
    };
});






<div ng-app='myApp' ng-controller='myCtrl'>
    <span after-render>{{expression}}</span>
</div>