2014-05-05 74 views
0

从提供https://docs.angularjs.org/guide/bootstrap页面上的例子,我可以看到手动初始化这样AngularJS手动初始化

<!doctype html> 
<html> 
<body> 
    Hello {{'World'}}! 
    <script src="http://code.angularjs.org/angular.js"></script> 

    <script> 
    angular.module('myApp', []) 
     .controller('MyController', ['$scope', function ($scope) { 
     $scope.greetMe = 'World'; 
     }]); 

    angular.element(document).ready(function() { 
     angular.bootstrap(document, ['myApp']); 
    }); 
    </script> 
</body> 
</html> 

实际上它不能很好地工作,但无论如何,我想有它的工作就是这样,我不不想在ng-controller指令中明确指定我的控制器,只是为了让它在那里。我希望将此控制器绑定到整个页面,而无需使用HTML进行额外操作。因为我想仅用于Ajax调用。可能吗?

+0

如果你想使用的角度为是使一个Ajax调用,那么你为什么使用角? Angular很好地处理了很多事情,但是对于ajax调用,图书馆大小的代价似乎并不合理,您能解释一下吗? – Brocco

+0

是的,我知道。但我也知道,将来我不仅可以在我的项目中使用ajax调用。所以这只是第一步。我只是想知道是否可以将控制器附加到我的视图中,而无需在我的HTML中指出它。因为如果我已经在我的JS中指出了它,那么为什么我需要另外告诉HTML。你看我的观点。 – o1egon

回答

0

浏览器找不到资源http://code.angularjs.org/angular.js 看看浏览器上的网络面板(开发人员工具)是否返回404错误。 尝试使用https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.6/angular.min.js

+0

您正在做一些OP没有经历的假设。 –

+0

该示例工作正常, 问题是无法加载angularjs资源 http://jsfiddle.net/#&togetherjs=L3Q7CCrQFV – user3605618

+0

但OP没有说他/他遇到了这个问题。 –

0

如果您想要创建专门用于AJAX调用的对象,那么您应该查看AngularJS services。服务是可以注入控制器,其他服务和指令的对象,它们通常提供某种可重用的功能(在你的情况下它会提供AJAX功能)。

控制器的目的是提供与视图交互的逻辑。如果你正在创建一个不以某种方式与视图交互的控制器,那么你做错了什么。

你的AJAX服务可能是这个样子:

<script> 
    var myApp = angular.module('myApp', []) 
     // notice the inclusion of 'myAjax' here. This is where we are injecting our 
     // custom service that me made. 
     .controller('MyController', ['$scope', 'myAjax', function ($scope, myAjax) { 

      $scope.url = 'cutepuppies.com'; 
      $scope.params = { 
       cutenessLevel: 'extraCute' 
      }; 

      function successcb(data, status, headers, config) { 
       //something on success 
      } 
      function failure(data, status, headers, config) { 
       //something on failure 
      } 
      $scope.get = function() { 
       // This is where we use our service to make an ajax call! 
       // We also pass in 2 callbacks, one to be called on success and one on error 
       myAjax.get($scope.url, $scope.params, successcb, failurecb); 
      } 
     }]); 

    // Here we define our service. This is what we will use in our app to make ajax calls. 
    myApp.service('myAjax', ['$http', function ($http) { 
     return { 
      get: function (url, params, successcb, failurecb) { 
       $http.get({ 
        method: 'GET', 
        url: url, 
        params: params 
       }) 
       .success(successcb) 
       .error(failurecb); 
      } 
     } 
    }); 

</script> 

下面就以供参考$ HTTP服务的链接:https://docs.angularjs.org/api/ng/service/$http

+0

感谢您的回复和示例。但我的问题是关于不同的东西。如果我将ng-controller =“MyController”指令添加到“body”标记中,我提供的示例运行良好。这就是为什么我问是否有可能避免使用HTML进行这种操作,并且仅对整个视图使用JS控制器声明。 – o1egon

+0

我并不完全理解你在做什么,但是你可能想看看'.run()'角度模块方法。使用'.run()'方法,你可以创建**运行块**,一旦你的所有依赖加载完成,就会在启动时调用它。这里是模块文档的链接,搜索“运行块”:https://docs.angularjs.org/guide/module – pje