angularjs 中的动态标题 - 使用 ng-attr-title

Dynamic Title in angularjs - using ng-attr-title

提问人:Divya MV 提问时间:10/29/2015 最后编辑:Divya MV 更新时间:11/3/2015 访问量:43764

问:

我怎样才能在angularJS中获取动态标题,我知道使用如下所示ng-attr-title

<div ng-app="myApp" ng-controller="ctrl">
<div ng-attr-title="{{title}}">Hover me</div>
</div>

控制器是

var app = angular.module('myApp', []);
function ctrl($scope){
$scope.title = "I 'm a tooltip!";    
}

这是 JSfiddle 及其工作原理。我正在尝试的是有两个不同的标题,一个在启用时,另一个在禁用时,所以我想决定在运行时进入的变量,如下所示。ng-attr-title

<div ng-app="myApp" ng-controller="ctrl">
<div ng-attr-title="{{message}}">Hover me</div>
</div>

控制器是

var app = angular.module('myApp', []);
function ctrl($scope){
$scope.Enabledtitle = "U can click me";
$scope.Disabledtitle = "U cannot click me";
 $scope.message="Enabledtitle";    
}

因此,当我将鼠标悬停时,我应该会得到工具提示,说“您可以单击我”。因此,我只需更新范围变量即可灵活地在工具提示消息之间切换message

这是 JSfiddle,我在其中尝试了动态标题,并得到了“Enabledtitle”作为工具提示,而不是“您可以单击我”。

我怎样才能告诉 angular 解析和识别它的价值。{{Enabledtitle}}

angularjs 的

评论


答:

8赞 JB Nizet 10/29/2015 #1

在控制器中:

$scope.getMessage() {
    return isEnabled ? "You can click me" : "You can't click me";
}

在视图中:

<div title="{{ getMessage() }}">...</div>

或者,每次代码更改标志的值时,也要更改消息。isEnabled

评论

0赞 user1438038 7/9/2018
例如,如果 在元素中定义,我们是否也可以将变量传递给 ?getMessage()divng-repeat
0赞 JB Nizet 7/9/2018
@user1438038是的,你可以。
2赞 Disha 10/29/2015 #2

$scope.message=$scope.Enabledtitle;  

而不是

$scope.message="Enabledtitle";
14赞 dfsq 10/29/2015 #3

您将需要使用括号表示法来访问具有变量名称的属性。因此,title 属性变为:ng-attr-title="{{this[message]}}

var app = angular.module('myApp', []);

function ctrl($scope) {
    $scope.Enabledtitle = "U can click me";
    $scope.Disabledtitle = "U cannot click me";
    $scope.message = "Enabledtitle";
}
<script src="http://code.angularjs.org/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="ctrl">
    <div ng-attr-title="{{this[message]}}">Hover me</div>
</div>

在您的例子中,指向当前范围对象,并且您正在通过动态键读取它的属性。this$scopemessage

演示:http://jsfiddle.net/oetd3bvy/2/