如何在 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。
我已经创建了一个服务,我想用它来设置控制器之间的值。我正在使用 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。