Angularjs控制器被称为两次? [英] Angularjs Controller Called Twice?

查看:97
本文介绍了Angularjs控制器被称为两次?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 ngResource 从服务器调用了数据。但是,我已经发现由于某种原因,我的控制器被调用了两次。

这是我的代码;

I have called the data from server using ngResource. however, i have figured out that for some reason, my controller is called twice.
Here is my code;

App.js文件

// declare a module
var blogApp = angular.module('blogApp', ['ngResource']);

HomeController.js文件;

HomeController.js file;

blogApp.controller("HomeController", function ($scope, $resource) {
    var HotNews = $resource('/api/article/hotnews?culture=en-US');
    $scope.news = HotNews.query();
    alert("hello"); //here i see hello alert box two times
});

我的观点;

  <ul id="news" data-ng-controller="HomeController">
      <li data-ng-repeat="headline in news">
          {{headline.description}}
          <a href="#" title="Read More">» more</a>
      </li>
  </ul>

已更新:问题出在 fancybox中。 js 主布局中的文件;

Updated: the issue is in fancybox.js file that is in main layout;

<html data-ng-app="blogApp">

源文件是;

    <!-- JS -->
<script src="/Content/scripts/lib/angular.min.js"></script>
<script src="/Content/scripts/lib/angular-resource.min.js"></script>
<script src="/Content/scripts/app/app.js"></script>
<script src="/Content/scripts/app/controllers/HomeController.js"></script>
@Scripts.Render("~/bundles/jquery")
<script src="/content/fancybox/jquery.fancybox-1.3.4.pack.js"></script>

当我评论出fancybox时,一切正常,但当我加回来时,我获得两次警报框;

推荐答案

这个问题的主要问题在于脚本是安排在我的项目中。所以,我逐个评论每个脚本,然后我得到了问题。问题是,我正在使用名为 pageslide 的jquery库,在我有一个按钮的情况下,当用户点击该按钮时,页面向左/右滑动;

所以,我只需将所有 angular 相关文件移到所有脚本的末尾,现在,我看不到 alert()框两次。

这里是适合我的安排;

The main point with this issue for me, was the way the scripts were arranged in my project. So, i comment- out each script one by one, and then i got the issue. The issue was, i was using jquery library called pageslide, in a situation where i have a button and when a user click on that button, the page were slide to left/right;
SO, i just move all of my angular related files to the end of all the scripts and now, i don't see the alert() box two times.
here is the arrangement that works for me;

 @Scripts.Render("~/bundles/jquery")
    <script src="/Content/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
    <script src="/content/scripts/lib/general.js"></script>
    <script src="/content/scripts/lib/function.js"></script>
    <script src="/content/scripts/lib/styleswitch.js"></script>
    <!-- elRTE -->
    <script src="/content/scripts/lib/elrte/elrte.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="/Content/scripts/app/dataservice.js"></script>
    <script src="/Content/scripts/app/statemanager.js"></script>

    // this was causing the problem

    <script>
        $("#allpage-login-top").pageSlide({ width: "350px", direction: "left" });
        $("#allpage-signup-top").pageSlide({ width: "350px", direction: "right" });
        $("#allpage-search-top").pageSlide({ width: "350px", direction: "left", modal: true });
        $("#homepage-login-button").pageSlide({ width: "350px", direction: "left" });
        $("#homepage-signup-button").pageSlide({ width: "350px", direction: "right" });
    </script>
        <!-- JS -->
    <script src="/Content/scripts/lib/angular.min.js"></script>
    <script src="/Content/scripts/lib/angular-resource.min.js"></script>
    <script src="/Content/scripts/app/app.js"></script>
    <script src="/Content/scripts/app/controllers/HomeController.js"></script>

    @RenderSection("scripts", required: false)
    @MiniProfiler.RenderIncludes()

这篇关于Angularjs控制器被称为两次?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆