Javascript $http成功后Angularjs运行指令

Javascript $http成功后Angularjs运行指令,javascript,angularjs,Javascript,Angularjs,我正在使用自定义指令制作导航,当一些人添加/删除导航中的任何内容时,我希望反映该导航上的更改。若nav来自范围,那个么我可以更新范围,但由于nav来自指令,所以我不知道如何在$http success上调用该指令 这是我的指示: 在这里你们可以看到我在指令中也使用了一些属性,这有助于我获取精确的导航选项 指令代码: app.directive('synapseToolbar', function() { var controller = ['$scope', '$element', '$

我正在使用自定义指令制作导航,当一些人添加/删除导航中的任何内容时,我希望反映该导航上的更改。若nav来自范围,那个么我可以更新范围,但由于nav来自指令,所以我不知道如何在$http success上调用该指令

这是我的指示:

在这里你们可以看到我在指令中也使用了一些属性,这有助于我获取精确的导航选项

指令代码:

app.directive('synapseToolbar', function() {
   var controller = ['$scope', '$element', '$attrs', '$http', '$compile','Scopes',
        function ($scope, $element, $attrs, $http, $compile, Scopes) {
        var uuid = $scope.uuid
        // my $http request comes here 
        // on $http success i'll set this below scope    
            $scope.synapse_toolbar_icons = a object
      }];
  return {
    restrict: 'EA',
    scope: {
      uuid: '=',
      method: '&myMethod',
    },
    controller: controller,
    link: function (scope, element, attrs) {
            var click_fn = scope.method();
             $(element).click(function(e, rowid) {
              click_fn(scope.link_source, scope.link_fact_type);
            });
          },
    template: '<div ng-show="synapse_toolbar_icons" ng-repeat="toolbar in synapse_toolbar_icons" class="tile iconSizeClass synapse-toolbar bg-crimson ng-scope" data-toggle="tooltip" ng-click="bindData(toolbar.link_source, toolbar.link_fact_type)">'+
              '<div dynamic="toolbar.icon_html"></div>'+
              '</div>',
  };
});
Plunker

$http返回承诺并且是异步的。您的指令在html呈现时运行。因此,在得到响应之前,不要呈现HTML

HTML:

这是因为ng if指令仅在表达式变为true时才会创建元素。

$http返回承诺并且是异步的。您的指令在html呈现时运行。因此,在得到响应之前,不要呈现HTML

HTML:


这是因为ng if指令仅在表达式变为true时才会创建元素。

假设标志已为true,并且我想运行指令,如果我将使flag=true,它将不会运行指令,因为flag已经为true。初始使其为false,然后在成功中使其为true。它将生成新的HTML或显示/隐藏已存在的相同HTMLinitially@safng如果每次都创建/删除新的html。它不会隐藏/显示相同的html。请提供fiddle,以便我们可以为您提供更好的解决方案看到这个Plunker添加,请检查如果标志已经为真,我想运行指令,如果我将使flag=true,它将不会运行指令,因为flag已经为true。初始使其为false,然后在成功中使其为true。它将生成新的HTML或显示/隐藏已存在的相同HTMLinitially@safng如果每次都创建/删除新的html。它不会隐藏/显示相同的html。请提供fiddle,以便我们可以为您提供更好的解决方案看到这个Plunker添加,请检查我想你需要使用$watch功能。您能提供指令和控制器代码吗?您能添加指令代码吗?@pankajparkar指令added@jme11指令添加到问题中我认为您需要使用$watch函数。您能提供指令和控制器代码吗?您能添加指令代码吗?@pankajparkar指令added@jme11问题中增加了指令
$scope.remove_synapse_link = function(){

        $http({
                method : 'POST',
            }).success(function(data,status){
                // here I want to call that directive again 
            })
            .error(function(data,status){
                    $.notify("Something went wrong while adding dislike", "error");
            }); 
    }
<div ng-if="ready"> 
   <div my-custom-directive></div>
</div>
$scope.ready = false;    
$http.get('/my-request').success(function(){
    $scope.ready = true;
});