Итак, что я в основном пытаюсь сделать, это создать многоразовый компонент в angularjs с помощью директивы. Эта директива будет другим модулем приложения (например, "childApp"). Я внедряю этот модуль и его зависимость в мой основной модуль приложения. Я помещаю эту директиву в модуль моего основного приложения (например, mainApp). Что делает эта директива, так это то, что она берет данные из контроллера mainApp и создает изолированную область в директиве. Из функции ссылки он вызывает службу childApp, возвращает ответ в формате html и прикрепляет его, чтобы изолировать область действия, например, scope.htmlresponse
‹ -- (htmlresponse
представляет собой массив). У меня также есть templateurl
, определенный в директиве, которая имеет этот код.
URL-адрес шаблона:
<ul class="nav navbar-nav">
<li>
<a href="" ng-click="doSomething()">
<i class="icon"></i>SomeOperation</a>
</li>
</ul
<div class="container" style="overflow-x:auto;" ng-bind-html="htmlresponse[0].htmlContent">
Привязка происходит, и htmlresponse отображается в URL-адресе шаблона.
Проблема начинается здесь:.
У меня также есть элементы ul
li
в templateUrl для выполнения различных операций, как вы можете видеть в приведенном выше коде templateUrl.
У меня есть ссылка, определенная как таковая:
link: function(scope, element, attrs){
init(); /*--**This was first call I was talking about in my question above which was returning htmlresponse**--*/
scope.doSomething = function(){
/*--** Makes a service call and this also returns an html response**--*/
//example service code similar to my code
childAppService.makeSecondServiceCall(scope.document).then(function(htmlresponse)
{
renderHtml(htmlresponse);
});
}
function renderHtml(responseData){
console.log(responseData);
if(responseData.status == 200)
scope.htmlresponse = responseData.data;
}
}
Точная проблема:
Я вижу нужные данные ответа в консоли, но scope.htmlresponse = responseData.data;
не обновляет URL-адрес шаблона с новым htmlresponse. Нужно ли мне делать что-то еще, чтобы обновить привязку в templateUrl? Я пробовал несколько вещей из Google, но это не помогает. Если кто-то сталкивался с такой проблемой, подскажите, как ее решить. Спасибо!