Динамический заголовок в angularjs-использование ng-attr-title

как я могу получить динамический заголовок в 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";    
}

поэтому, когда я зависаю, я должен получить подсказку с надписью "U can click me". Так что я получаю гибкость для переключения между сообщениями всплывающей подсказки, просто обновляя переменную scope message

здесь JSfiddle где я пробовал динамический заголовок и получаю "Enabledtitle" в качестве всплывающей подсказки вместо "U может щелкнуть меня".

как я могу сказать Angular для разбора {{Enabledtitle}} и дайте мне его значение.

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 указывает на текущий объект сферы $scope и Вы читаете это свойство динамическим ключом message.

демо: http://jsfiddle.net/oetd3bvy/2/


в контроллере:

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

в виде:

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

или, каждый раз, когда код изменяет значение isEnabled флаг, также измените сообщение.


do

$scope.message=$scope.Enabledtitle;  

вместо

$scope.message="Enabledtitle";