gpt4 book ai didi

javascript - 如何在 AngularJs 指令中使用 Controller 变量

转载 作者:行者123 更新时间:2023-12-03 05:59:07 25 4
gpt4 key购买 nike

如何在指令中使用 Controller 变量。我在指令范围内使用了 popoverHtml 但当我添加这样的类型时不起作用:

像这样:scope: { popoverHtml:'@', type: @ },

我的 html 是:

 good <input type='radio' name='type' value='good' data-ng-model='type' 
data-ng-change='change(type)' />
bad <input type='radio' name='type' value='bad' data-ng-model='type'
data-ng-change='change(type)' />
<next-level id='pop' popover-html='{{typeMessage}}'></next-level>

我的 Controller 是:

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

app.controller('MainCtrl', function($scope) {
$scope.typeMessage = 'PopOverTest';
$scope.type = false;
$scope.change = function(type){
if(type == 'good'){
$scope.typeMessage = 'very good';
}else if(type == 'bad'){
$scope.typeMessage = 'very bad';
}
};
});

我的指令:

    app.directive('nextLevel', function () {
return {
restrict: 'EA',
scope:{ popoverHtml:'@'},
template: '<a ui-sref="register" tabindex="0" linkdisabled="{{type}}"
class="btn btn-block btn-success ng-class: {disabled: !(type)}" role="button" >next</a>',
link: function (scope, el, attrs){
$(el[0]).popover({
trigger: 'click',
html: true,
toggle:'popover',
title: 'notice !!',
content: scope.popoverHtml, // Access the popoverHtml html
placement: 'bottom'
});

attrs.$observe('popoverHtml', function(val){
$(el[0]).popover('hide');
var popover = $(el[0]).data('bs.popover');
popover.options.content = val;
console.log(popover);
})


}
};
});

演示:https://plnkr.co/edit/wfC4DrTIp8fRIs6hEEDa?p=preview

最佳答案

如果您想在 ng-class 中使用它,则不能将 type 作为 @ 绑定(bind)发送到指令。如果您在主 Controller 中对 type 进行更改,它们将不会反射(reflect)在指令内的 ng-class 中。看看 here

为了反射(reflect) ng-class 中的更改,您必须将其作为 = 绑定(bind)传递。

笨蛋 here

关于javascript - 如何在 AngularJs 指令中使用 Controller 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39819250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com