[英]Change button text based on scope variable in angularJS
我的页面上有一个按钮,其文本(OFF / ON)将根据控制器中的变量而变化。 默认情况下,变量值为false,因此文本将为ON。 当用户单击此按钮时,变量值将为true,文本将为OFF。
通过另一个按钮打开一个弹出窗口,我有这个相同的按钮。 该窗口将使用相同的控制器。
问题是,如果我通过单击更改按钮文本,则该文本应反映在弹出窗口中。 弹出窗口中的更改应反映在主页上。
.controller('myController', ['$scope', 'myService',
function ($scope, myService) {
$scope.btnText = myService.getTextState();
};
$scope.toggleText = function(){
$scope.btnText = myService.toggleText($scope.toggleText);;
};
$scope.getTitle = function() {
if($scope.btnText){
return "OFF";
}
else{
return "ON";
}
};
]);
.service('plotPanelService', function () {
var btnText = false;
toggleText: function (param) {
btnText = !param;
return (!param);
},
setTextState: function (paramText) {
btnText = paramText;
},
getTextState: function () {
return btnText;
}
}
{{myVar ===“ true”? “这是真的” : ””}}
如果要在两个不同的控制器之间共享模型,则应创建服务或工厂。
您说的是,您多次使用同一控制器。 控制器不是单例。 它将被创建多次。 但是工厂或服务是单例的。 因此,您可以在两个控制器之间共享同一对象。
另一个解决方案是为模型创建包装器。 如果在父控制器中创建包装对象,则可以直接在子控制器中访问该包装对象。 Angular提供程序原型继承。 因此,您的子控制器中将具有相同的对象。
var app = angular.module('plunker', ['uiSwitch']);
app.controller('controller', function($scope, myservice) {
$scope.model = myservice.model;
});
app.service('myservice', function () {
this.model = {
enabled: false
}
});
HTML:
<div ng-controller="controller">
<p>Controller 2</p>
<switch id="enabled" name="enabled" ng-model="model.enabled" class="green"></switch>
<br>{{ model.enabled }}
</div>
<div ng-controller="controller">
<p>Controller 2</p>
<switch id="enabled" name="enabled" ng-model="model.enabled" class="green"></switch>
<br>{{ model.enabled }}
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.