AngularJS:在生产中运行时删除开发部分

时间:2015-03-03 10:49:44

标签: angularjs visual-studio

我正在Visual Studio 2013中开发 AngularJS 应用程序。我已经添加了一个自定义HTML模板,其中包含一些调试表单字段,以便在开发网站时操作我的范围:

<div data-ng-include="'App/Development/development.html'"></div>

这已在左下角修复,让我更容易在测试网站时快速执行某些操作。

但是当我部署我的网站(发布配置)时,应该删除它。

有没有人有这样做的好方法?目前我的App配置和AngularJS没有集成,所以没有办法告诉我的Angular应用程序它在生产模式下运行。

3 个答案:

答案 0 :(得分:0)

让我们假设您正在使用带剃刀的mvc

创建一个cs文件

public class ConfigManager
{
    public static bool IsDebugMode()
    {
        #if DEBUG
           return true;
        #else
           return false;
        #endif
    }
}

获取值

<script>
  app.value('myValue', @ConfigManager.IsDebugMode());
 <script>

在角度控制器上

app.controller('ctrl', function($scope, myValue)  {
  //use myValue
      $scope.isTestMode = myValue;
 });

HTML

<div data-ng-show="isTestMode" data-ng-include="'App/Development/development.html'"></div>

答案 1 :(得分:0)

在它上面放置一个ng-clock,这样在角度加载和ng-if之前就不会显示div。如果这样你就不会为常规用户加载(&#34;包括&#34;)所需的源。让服务/控制器检查主机(窗口对象的属性)。如果它是本地的,请使用ng-if显示该面板。你也可以检查查询字符串。所以你可以通过在例如Url上附加?debug = true来调试远程。

答案 2 :(得分:0)

我的解决方案是只检查主机名,如果localhost我正在显示我的开发栏。

app.controller('development', function ($scope) {
    $scope.debug = document.location.hostname == "localhost";
});