Javascript 在AngularJS中将控制器变量值传递给指令

Javascript 在AngularJS中将控制器变量值传递给指令,javascript,angularjs,Javascript,Angularjs,我正在做一把小提琴,我从答案中找到了 我对小提琴进行了如下修改: angular.module('sampleApp', []) .controller('myCtrl', function($scope) { $scope.func = function() { $scope.name = "Test Name"; } }) .directive("myDirective", function($compile)

我正在做一把小提琴,我从答案中找到了

我对小提琴进行了如下修改:

angular.module('sampleApp', [])
  .controller('myCtrl', function($scope) {
    $scope.func = function() {
     $scope.name = "Test Name";
    } 
  })
  .directive("myDirective", function($compile) {
    return {
      template: "<div>{{name}}</div>",
      scope: {
        name: '='
      },
      link: function(scope, element, attrs) {  
        alert(scope.name);
      }

    }
  });
angular.module('sampleApp',[])
.controller('myCtrl',函数($scope){
$scope.func=函数(){
$scope.name=“测试名称”;
} 
})
.directive(“myDirective”,函数($compile){
返回{
模板:“{name}}”,
范围:{
名称:'='
},
链接:函数(作用域、元素、属性){
警报(范围、名称);
}
}
});
基本上,我试图将变量值从作用域函数传递到指令-但警报消息显示一个未定义的值

你知道这里出了什么问题吗?如何在$scope.func函数中传递存储在$scope.name中的值并将其传递给指令


可以找到更新的fiddle。

问题是您在控制器的函数中定义名称,而该函数从未被调用。换成这个

angular.module('sampleApp', [])
  .controller('myCtrl', function($scope) {
    $scope.name = "Test Name";
  })
  .directive("myDirective", function($compile) {
    return {
      template: "<div>{{name}}</div>",
      scope: {
        name: '='
      },
      link: function(scope, element, attrs) {  
        alert(scope.name);
      }

    }
  });

<div ng-app="sampleApp" ng-controller="myCtrl">

  <div my-directive name="name">
  </div>
</div>
angular.module('sampleApp',[])
.controller('myCtrl',函数($scope){
$scope.name=“测试名称”;
})
.directive(“myDirective”,函数($compile){
返回{
模板:“{name}}”,
范围:{
名称:'='
},
链接:函数(作用域、元素、属性){
警报(范围、名称);
}
}
});

警报功能在控制器设置数据之前执行

要查看值更改,请添加控制器并使用
$onChanges

app.directive(“myDirective”,function()){
返回{
模板:“{name}}”,
范围:{
"n,a,m,e":"","n","a","m,e":""

name:'有没有一种方法可以通过保留函数来调用它?我正在该函数中进行另一个GET调用,以获取我存储到变量中的数据,该数据需要发送到指令。您只需在API返回后重新分配到新值。双向绑定负责更新/重新呈现。添加
ng if=“name”在您定义指令后,它将实例化。在代码由控制器设置之前,警报函数正在执行。您是否希望在每次值更改时发出警告?请考虑添加控制器并使用<代码> $Onchange < <代码>。
app.directive("myDirective", function() {
    return {
      template: "<div>{{name}}</div>",
      scope: {
        ̶n̶a̶m̶e̶:̶ ̶'̶=̶'̶
        name: '<'
      },
      controller: function() {  
        this.onChanges = function(changesObj) {
           if (changesObj.name) {
             alert(changesObj.name.currentValue);
           };
        };
      }
    }
});