【发布时间】:2016-04-21 06:31:46
【问题描述】:
我有以下指令来显示警报,所以我想在显示变量更改为星号运行超时时捕获我该怎么做?
仅第一次调用链接函数,但所有变量显示、消息和类型都未定义
指令代码
angular.module('pysFormWebApp')
.directive('alertDirective',
function alertDirective ($timeout) {
return {
restrict : 'E',
scope : {
message : "=",
type : "=",
show : "=",
test : "="
},
controller : function ($scope) {
$scope.closeAlert = function () {
$scope.show = false;
$scope.type = "alert alert-dismissable alert-";
$scope.message = "";
};
$scope.getStrongMessage = function (type) {
var strongMessage = "";
if(type == "success"){
strongMessage = "\xC9xito ! ";
} else if(type == "warning"){
strongMessage = "Cuidado ! ";
return strongMessage;
}
},
link: function(scope, element, attrs) {
scope.$watch(scope.show,
function (newValue) {
console.log(newValue);
},true);
},
templateUrl : "views/utilities/alert.html"
};
});
html指令代码
<div ng-show="show">
<div class="alert alert-dismissable alert-{{type}}">
<button type="button" class="close" ng-click="closeAlert()">×</button>
<strong>{{getStrongMessage(type)}}</strong> {{ message | translate }}
</div>
</div>
控制器示例
$scope.info.alert = {
message: "EXPOTED-SUCCESS",
type: "success",
show : true
};
html代码
<alert-directive message="info.alert.message"
type="info.alert.type"
show="info.alert.show">
</alert-directive>
【问题讨论】:
-
你有错误的手表代码,它应该是你的指令中的
scope.$watch('show' -
非常感谢@PankajParkar 我在这个错误上花了很多时间。你是对的,这是错误
-
我觉得这样比较适合以后参考
标签: javascript angularjs angularjs-directive angularjs-watch