AngularJS newb在这里,有很多问题。
例如,在此指令代码段中:
link: function(scope, element, attrs) {
scope.hideModal = function () {
console.log("hide modal fxn called");
scope.show = false;
};
},
template:'<div class=\"ng-modal\" ng-show=\"$scope.show\">' +
'<div class=\"ngdialog-overlay\" ng-click=\"hideModal()\"></div>' +
'<div class=\"ng-modal-dialog\" ng-style=\"dialogStyle\">' +
'<div class=\"ng-modal-close\" ng-click=\"hideModal()\">X</div>' +
'<div class=\"ng-modal-dialog-content\" ng-transclude></div>' +
'<div style=\"left:80%\"><button type = \"button\" style=\"float:right\">Next</button></div>' +
'</div>' +
'</div>'
我问这些是因为无论我把它放在哪里(指令或控制器)我都无法使hideModal()函数工作,我想知道为什么。
如果你能尽可能以外行的方式回答我,我会非常感激。 AngularJS对我来说是一件很难理解的事情,我对它并不是那么精通,所以如果你不这样做的话,你有100%的机会从我那里得到空白的目光。
谢谢。
答案 0 :(得分:2)
$scope
,则确实没有区别。 scope
函数中的link
与控制器中$scope
的{{1}}完全相同。$inject
函数中。如果我需要DOM操作,我只使用link
,即通过jQuery link
。$scope
功能。一般规则是,您需要link
操纵吗?使用DOM
功能,否则只需坚持使用link
。
不同之处在于执行时间,controller
函数在编译之前执行,而controller
在模板编译之后执行。
这就是为什么要使用链接功能进行link
操作的原因。在DOM
阶段,模板尚未编译,因此您无法在函数的构造函数中使用controller
操作。
如果您根本不需要DOM
操作,那么查看新的DOM
语法可能会更好。与.component
语法相比,这更容易理解。请注意,.directive
语法只是.component