12

我是 angularjs 的新手。我试图找出何时使用价值与工厂即服务。这是我在 egghead.io 教程中的简单代码:

.value('Data', function(){
    return {message:"I am data from a service"};
  })

Data.message 绑定到输入字段。当我启动页面时,输入字段中没有任何内容。如果我将值更改为工厂,则默认消息会出现在输入字段中。

这是控制器:

controller('FirstCtrl', ['$scope','Data',function($scope, Data) {
    $scope.data = Data;
    console.log('exiting first controller');
  }])

和索引文件:

<div ng-controller="FirstCtrl">
   <input type="text" ng-model="data.message">
   <h1>{{data.message}}</h1>
</div>

为什么使用值时页面空白?我的假设是应用程序启动时不计算或计算值,而工厂是?

另外,我在哪里可以找到有关 $provide 的一些文档?谢谢你们。

4

2 回答 2

19

将值设置为对象,而不是函数:

app.value('Data', {message:"I am data from a service"});

普朗克

另请参阅provide.value(),以及有关 $provide (value, constant, service, factory, decorator, provider) 的视频

于 2013-04-16T01:29:49.117 回答
-1

您应该将控制器声明为

   app.controller('DataController', ['Data', function DataController(Data){
      this.data = Data;
   }]);

然后像在我的代码中一样在您的页面中使用它

<div ng-controller='DataController as dataController'>
      {{dataController.data()}}
   </div>
于 2015-04-17T15:38:03.457 回答