如何在angularjs服务中设置值?

时间:2015-02-25 19:53:50

标签: angularjs angularjs-service

我创建了一个我想用来设置控制器之间值的服务。我正在使用ng-model。在我的服务之前,我在我的html中有这个:

<div class="col col-25">
        <a class="input" data-ng-keypad-input="numeric" tabindex="15" data-ng-model="fields.widthDefault" ng-change="updateROIWidths()">{{fields.widthDefault}}</a>
</div>

我的字段定义如下:

$scope.fields = {
  widthDefault  : 0

我的updateROIWidths只是:

$scope.updateROIWidths = function(){
     $scope.fields.widthCurrent = Number($scope.fields.widthDefault);
};

但是,现在我需要一个服务,因为我必须在其他控制器中设置默认值。所以,我提供了这样的服务:

.service('DefaultValuesService', function() {
     this.defaultWidth = Number(0);

     this.getDefaultWidth = function() {
        return this.defaultWidth;
     };
     this.setDefaultWidth = function(w) {
        this.defaultWidth = Number(w);
     };
)

那么我现在在html或js中如何使用推算的默认值来设置其他值呢?

1 个答案:

答案 0 :(得分:0)

您需要将服务注入两个控制器。你这里没有任何控制器代码,但基本上你最终会得到像

这样的东西
.controller('controllerA', ['$scope', 'DefaultValuesService', function($scope, DefaultValuesService){
    $scope.fields = {
       widthDefault  : DefaultValuesService.defaultWidth
    }
}]

.controller('controllerB', ['$scope', 'DefaultValuesService', function($scope, DefaultValuesService){
    $scope.changeDefaultWidth = function(width){
       DefaultValuesService.defaultWidth
    }
}]

请注意,由于Angular的双向绑定功能,您不需要getter / setter。