【发布时间】:2014-12-30 11:43:35
【问题描述】:
我在一个页面上有两个按钮,它们的功能基本相同。按钮 1 检索字符串并将其输出到 div。按钮 2 检索相同的字符串并将其输出到相同的 div,但它也检索状态代码。每次重新加载页面只能按下 1 个按钮。这是我的控制器的精简版:
angular.module('myModule', []).controller('myController', [ '$scope', function($scope) {
self = this;
this.loaded = false;
this.msg = '';
this.getMessage = new Object(blah...);
this.getMessage.success = function(data) {
self.loaded = true;
self.msg = data.msg;
$scope.$apply(function() {
self;
});
};
this.getStatus = new Object(blah...);
this.getStatus.success = function() {
self.getMessage();
};
this.button1.click(function() {
$.ajax(self.getMessage);
});
this.button2.click(function() {
$.ajax(self.getStatus);
});
}]);
我将 jQuery 用于 AJAX 调用,因为我正在从 jQuery 迁移到 Angular,并且正在从前到后工作以清除所有 jQuery。到目前为止,我的页面看起来像这样:
<DOCTYPE html>
<html>
<head>
<!-- js/css inclusions -->
</head>
<body>
<div ng-controller='myController as ctrl'>
<div ng-show='ctrl.loaded' ng-bind='ctrl.msg'></div>
</div>
</body>
</html>
页面加载时,我的 div 如下所示:
<div class='ng-hide'
ng-show='ctrl.loaded'
ng-bind='ctrl.msg'
style='display: none'></div>
当按钮 1 被点击时,我的 div 变成:
<div class=''
ng-show='ctrl.loaded'
ng-bind='ctrl.msg'
style=''>Message Here.</div>
当按钮 2 被点击时,我的 div 变成:
<div class=''
ng-show='ctrl.loaded'
ng-bind='ctrl.msg'
style='display: none'>Message Here.</div>
这个 div 不是我设计的,只是 Angular 的默认 CSS 用于显示/隐藏东西。我的问题是:我做错了什么吗?是否有某种我没有看到的范围界定问题?还有什么我做得不正确的事情(Angular 方式)?
编辑:将$scope 服务注入我的控制器,但结果仍然相同。
【问题讨论】: