如何在 angularjs 服务中设置值?

How do I set the value in my angularjs service?

我已经创建了一个服务,我想用它来设置控制器之间的值。我正在使用 ng 模型。在我服务之前,我在 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 中如何使用估算的默认值来设置其他值?

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

的东西
.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 的双向绑定功能,您不需要 getters/setters。