Javascript ngInclude如果文件不';不存在
我需要使用ngInclude包含一个文件。 我的问题是,我想加载一个自定义视图。如果这个customView不存在,我想使用默认的 我有一段代码在工作,但我认为我可以做得更好。。。我想使用一个指令,我认为它更好 HTML:Javascript ngInclude如果文件不';不存在,javascript,html,angularjs,angularjs-directive,Javascript,Html,Angularjs,Angularjs Directive,我需要使用ngInclude包含一个文件。 我的问题是,我想加载一个自定义视图。如果这个customView不存在,我想使用默认的 我有一段代码在工作,但我认为我可以做得更好。。。我想使用一个指令,我认为它更好 HTML: <div class="include-container" ng-include="{{ mainViewUrl }}"></div> 谢谢你的帮助,希望这不是一个重复的问题 编辑: <div class="include-container
<div class="include-container" ng-include="{{ mainViewUrl }}"></div>
谢谢你的帮助,希望这不是一个重复的问题
编辑:
<div class="include-container" ng-include="{{ mainViewUrl }}"></div>
我找到了这部分解决方案:
这是
如果失败,我想加载我的默认url。有什么想法吗
EDIT2:
<div class="include-container" ng-include="{{ mainViewUrl }}"></div>
我想这样做:
<div class="include-container" ng-include="customView.html || defaultView.html"></div>
将响应放入
$templateCache
中,这样视图就不会再次请求获取相同的文件
$http.get('customView.html').then(function success(response) {
$templateCache.put('customView.html', response.data);
$scope.mainView = "'customView.html'";
}, function error(response) {
$scope.mainView = "'defaultView.html'";
});
看起来会加载两次。您可以插入字符串而不是文件吗?在
get
部分中,您已经将文件内容作为字符串,如果不需要(在显示的代码中不需要),那么它应该是一个HEAD请求,而不是一个GETI,将通过将调用放入工厂开始。响应包含哪些数据。我是说,你不用它。为什么不呢?您不应该对http调用使用指令。指令应该是应用程序中的哑组件。如果可能的话,我宁愿使用其他东西而不是http调用:)这是我目前为止找到的唯一方法。。。我将更新我的问题,以显示我使用的指令,但对我来说做得不够好。。。但我不知道它什么时候可以做两次请求?还有什么使用指令可以做的吗?会做两次请求,因为$http
发出一个请求…那么ng include