【问题标题】:Why doesn't angularjs code render when controller is referenced?为什么在引用控制器时 angularjs 代码不呈现?
【发布时间】:2014-11-29 14:44:23
【问题描述】:

我在 VS.NET 2013 中创建了一个新的 asp.net MVC 应用程序。在 _Layout.cshtml 中,我引用了 angularjs 库(Google 开发者网站)。我还定义了一个名为“con1”的控制器并创建了一个变量。

_Layout.cshtml:

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.min.js"></script>
<script type="text/javascript">
   function con1($scope) {
     $scope.somestring = "some string";
   }
</script>

Index.cshtml:

<div>
{{1+1}}
</div>

上述工作正常并呈现“2”的结果。

当我将 div 更改为以下内容并开始尝试访问控制器中的 somestring 变量时,我得到的是实际的 AnguarJS 代码而不是结果。

<div ng-controller="con1">
{{1+1}}
</div>

输出:“{{1+1}}”

知道为什么添加控制器引用会破坏它吗?这似乎是 VS.NET 特定的。我这里有一个运行良好的 jsfiddle:http://jsfiddle.net/jpswdzxu/。这基本上是 VS.NET 项目的输出。

【问题讨论】:

标签: asp.net-mvc angularjs visual-studio angularjs-scope


【解决方案1】:

您需要定义 Angular 应用程序,否则它将无法工作:

<script type="text/javascript">
    var myApp = angular.module('myApp',[])

    .controller('myAppCtrl', function($scope) {

        $scope.somestring = 'teststring';
    });
</script>

那么,HTML 应该是:

<body ng-app="myApp">

    <div ng-controller="myAppCtrl">
        {{somestring}}
    </div>
</body>

或者,使用你的 jsfiddle,它会是:

<div ng-app="myApp" ng-controller="myAppController">
    {{1+1}}
    <br>
    {{somestring}}
</div>

和:

angular.module('myApp',[])

.controller('myAppController', function ($scope) {
    $scope.somestring = "some string";
});

祝你好运!

【讨论】:

  • 太棒了!这行得通。我有几个问题: 1.) 我见过很多 工作正常的例子。为什么这里不是这样? 2.) 我在xombe.com/2014/02/17/combine-angular-js-with-asp-net-mvc 处遵循示例。也许他遗漏了几步?谢谢!
  • 4thSpace,很高兴这有帮助。回答 1) 我不确定这些问题。 &lt;html lang="eng" ng-app&gt; 我认为在某些版本中是允许的,但我从未发现需要排除该名称。正如 Chandermani 在上面的评论中所说,从 1.3 版开始不支持全局控制器。至于 2) 看起来作者使用的是早期版本,或者只是省略了页面的 ng-app 指令部分。就我个人而言,我一直在 html 标记和 javascript 中定义应用程序,因此我不确定该特定用法的详细信息。
猜你喜欢
  • 2014-08-24
  • 2014-03-02
  • 1970-01-01
  • 2019-04-08
  • 2023-01-19
  • 2010-09-20
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
相关资源
最近更新 更多