Angularjs ng-show不适用于Viewbag

时间:2015-06-17 09:11:04

标签: angularjs asp.net-mvc-4

在Angularjs模板中,可以在ng-show中使用ViewBag.Property吗?

我在我的控制器/动作中设置了一些视图包

ViewBag.AllowExport = false;

当我尝试不做任何事情时

 <div ng-show="@ViewBag.AllowExport">
    <a href="JavaScript:void(0);">Export</a>
 </div>

即使AllowExport = false,

仍然显示Div。

我的语法是错误的还是我们不能在ng-show中使用Viewbag?

任何建议

2 个答案:

答案 0 :(得分:3)

试试这个:

 <div ng-show="'@(ViewBag.AllowExport)'">
    <a href="JavaScript:void(0);">Export</a>
 </div>

答案 1 :(得分:0)

你在这里混合了fron-tend(Angular / JavaScript)和后端(Razor)代码。我强烈反对这一点。但是,如果你真的想这样做:HTML中的结果将只是Angular的字符串。

这应该有效,因为Angular将验证{{}}中的表达式:

<div ng-show="{{@ViewBag.AllowExport}}">
    <a href="">Export</a>
</div>

我建议您不要在Angular HTML代码中混合使用Razor语法,而是建议使用从某个JSON源设置的范围变量,或者如果您真的想要混合使用MVC数据,请在某些Javascript配置中设置值:

<script>
    window.ClientConfig = {
        allowExport: @ViewBag.AllowExport,
    };
</script>

然后在Angular控制器中使用$scope.allowExport = window.ClientConfig.allowExport;

在HTML中:

<div ng-show="allowExport">
    <a href="">Export</a>
</div>