0
angular.module('app.services', []).service("test", function($http, $rootScope){
this.test=function(){
$rootScope.name="test1";
};
};

angular.module('app.controllers', []).controller('TestController', function ($scope, test)    {
                test.send();      
    })

エラーは発生しませんが、変更が UI に適用されません。$scope.apply() を試したところ、エラーが発生しました。

4

2 に答える 2

0

モジュールが依存するモジュールを Angular に伝える必要があります。この場合、メイン モジュールはapp.controllersです。

別のモデルからサービスを呼び出すには、コントローラーにサービスの場所を伝える必要があります。

['app.services']

JS

var appServices = angular.module('app.services', []);
var appCtrl = angular.module('app.controllers', ['app.services']);

appServices
.service("test", function ($http, $rootScope) {
    this.send = function () {
        $rootScope.name = "test1";       
    };
});

appCtrl.controller('TestController', function ($scope, test) {
    test.send();
});

デモFiddle

于 2013-10-24T18:22:38.853 に答える
0

「.service」を「.factory」に変更したほうがいいと思います。

サービスの作成に関するドキュメントでわかるように、 カスタム サービスを作成するには 3 つの方法があります。そのうちの 1 つは、次のようにファクトリの方法を使用することです。

var myModule = angular.module('myModule', []);
   myModule.factory('serviceId', function() {
      var shinyNewServiceInstance;
     //factory function body that constructs shinyNewServiceInstance
     return shinyNewServiceInstance;
  });

お役に立てれば幸いです。

于 2013-10-24T18:37:44.750 に答える