繁体   English   中英

Angular JS不适用于Bootsrap和ASP.NET MVC

[英]Angular JS does not work with Bootsrap and ASP.NET MVC

我正在尝试非常简单的AngularJS示例来发布用户通过文本框输入的数据。

我在做:

<div ng-controller="Subscribe">
 <input type="text" ng-model="EmailAddress" />
 <button class="btn btn-success" ng-click="send()">Subscribe</button>
 <div>{{status}}</div>
</div>


@section FooterJS{

<script type="text/javascript">

    function Subscribe($scope) {

        $scope.send = function () {
            //alert("sdf");
            var _url = '/NewsLetter/Subscribe'
            $http({ method: 'POST', url: _url, cache: $templateCache }).
                  success(function (data, status) {
                      $scope.status = status;
                      $scope.data = data;
                  }).
                  error(function (data, status) {
                      $scope.data = data || "Request failed";
                      $scope.status = status;
                  });
        }
    }

 </script>

}

在Main Layout页面中,我包含了以下js文件,在js文件之后,添加了FooterJS部分。

<script src="~/Scripts/jquery-2.0.3.min.js"></script>     
<script src="~/Scripts/bootstrap.min.js"></script>
<script src="~/Scripts/angular.js"></script>

<script src="~/Scripts/angular-resource.min.js"></script>
<script src="~/Scripts/bootstrap-lightbox.min.js"></script>

生成的输出是http://gyazo.com/ad2a992d8dc2af106ca95956abffe1d5

当我单击按钮时什么也没有发生。

没弄错是什么?,我是Angular JS的初学者。

$ http和$ templateCache尚未注入到控制器中。

function Subscribe($scope) {

应该改为

function Subscribe($scope, $http, $templateCache) {

有关角度依赖注入的更多信息,请参见http://docs.angularjs.org/guide/di

您需要确保有一个ng-app部分围绕控制器(可能还有其他html代码),如下所示:

<div ng-app>

... some html code here ...

    <div ng-controller="Subscribe">
      <input type="text" ng-model="EmailAddress" />
      <button class="btn btn-success" ng-click="send()">Subscribe</button>
      <div>{{status}}</div>
    </div>

... more html code here ...

</div>

观察结果 :我认为您正在实现几种反模式。 AngularJS的主要目的之一是避免从像ASP.NET这样的mvc框架生成渲染的html。 AngluarJS的哲学是使用它来使用静态htmls文件创建单页应用程序,因此表示层位于纯静态html,javascript和css文件上,因此最好不要使用MVC框架,而是使用API​​ REST框架,例如Service Stack使用REST Web服务与表示层通信。

其次,您应避免执行“ @section FooterJS”操作,因为您将html模板逻辑与javascript代码耦合在一起,该代码应位于另一个文件中以提供更好的可维护性,您应该创建另一个javascript文件并使用来将其添加到html中。 <script>标记,例如<script src="SubscribeCtrl.js">等。

最后,我建议您按照本教程https://egghead.io/lessons/angularjs-controllers更好地了解angularjs控制器,我真的建议您观看egghead提供的所有免费angularjs视频,它们的确很棒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM