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);
};
};
}
}
});