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