繁体   English   中英

无法访问指令(AngularJS)中的范围变量

[英]Can't access scope variable in directive (AngularJS)

我想在每次将值更新到控制器中时更改update指令。

不幸的是,我无法从指令中访问作用域值。

这是指令的代码:

myApp.directive( 'raphael', function ($compile, $document, $timeout) {
  return {
    link: function ( scope, element, attrs ) {


    var paper = new Raphael(element[0], 600, 600);
// I need it right here !

我试过用$手表​​:

scope: {variable: '='},
link: function ( scope, element, attrs ) {
  scope.$watch(variable, function(){
    console.log(variable);

但它不起作用

然后,每次在控制器中更新变量时,我该怎么做才能“更新”整个指令?

谢谢!

您的$ watch手表只有一个简单的问题,有点难以解释。 “变量”不是链接函数在代码范围内的已定义变量(不是从角度称为范围的变量,而是JavaScript函数的实际范围)。

也许代码比单词更能解释它:

scope: {variable: '='},
link: function ( scope, element, attrs ) {
  scope.$watch("variable", function (variable) {
    console.log(variable);

让我们将变量重命名为更确定的名称以显示正在发生的事情。 对于位于范围内的变量,我们将其称为“ foo”,而$ watch传递的foo的值将被称为“ bar”

scope: {foo: '='},
link: function ( scope, element, attrs ) {
  scope.$watch("foo", function (bar) {
    console.log(bar);

因此,$ scope.foo是位于$ scope上的变量,该变量由元素的foo属性双向绑定。 bar是$ watch函数传回的newValue。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM