修改
如果我将数据放入全局对象,我可以检查全局对象的内容。如果全局对象已经有数据,则终止该函数,不要运行另一个AJAX请求,并将全局对象中的HTML注入页面。使用$scope
或$http
似乎无法解决问题。如果有人有更好的解决方案,我很高兴知道它。
这就是我希望它工作的方式,但是那个plunker没有页面路由:
plunker - inject HTML into two different pages. Content saved in $scope
我的网站有一个名为STORES的页面。当用户单击STORES菜单并加载STORES页面时,AJAX将获取所有商店名称,并将所有商店名称放入STORES页面。商店名称的HTML添加了innerHTML
。每次angularjs再次加载模板时,注入商店名称的HTML似乎都会丢失。我有每次加载STORES页面时运行的代码。该代码检查具有所有商店名称的UL标签是否具有任何childNodes,如果该值为零,则添加商店名称。每次我导航到STORES页面,并且angularjs加载页面时,UL标签没有子节点。 (所有商店名称都消失了。)我希望能够检索商店名称并仅注入一次HTML内容,而不需要再次运行它。
一切正常。代码没有被破坏。代码中没有任何错误。我只想要一种方法来保持每次angularjs重新加载页面时丢失注入的HTML。
<ul id='storesCat'></ul>
上述UL元素接收HTML。下面的元素包含UL标记。
<section ng-controller="HideShowInStores">
<ul id='storesCat'></ul>
</section>
当angularjs路由到页面时,控制器&#34; HideShowInStores&#34;触发一些代码运行。
if (elStoreList.childNodes.length === 0) {
console.log('there are NO child nodes: ');
..... Code left out here for sake of condensing the code
htmlToInject = xmlhttp.responseText;
elStoreList.innerHTML=htmlToInject;
};
function($routeProvider) {
$routeProvider.
when('/Stores', {
templateUrl: 'Client_Pages/HTML/Stores.html'
}).
当用户单击STORES菜单时,URL会更改,路由器运行,并将Stores.html页面放入ng-View DIV,然后将更多HTML放入无序列表标记中。无论什么HTML放入UL标签,每次用户导航到另一个页面时似乎都会丢失。
有没有办法让angularjs来维护注入的HTML?