Angularjs 如何从控制器中的指令获取范围变量?
我正在构建一个自定义指令,希望在其中从控制器访问隔离范围变量 以下是html的外观:Angularjs 如何从控制器中的指令获取范围变量?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我正在构建一个自定义指令,希望在其中从控制器访问隔离范围变量 以下是html的外观: <display-user-comment userId="user.id"></display-user-comment> app.directive('displayUserComment', function () { return { restrict: 'E', templateUrl: 'user_co
<display-user-comment userId="user.id"></display-user-comment>
app.directive('displayUserComment', function () {
return {
restrict: 'E',
templateUrl: 'user_comment.html',
scope: {
userId: '='
},
controller: 'UserCommentController as userCmtCtrl'
};
})
app.controller('UserCommentController', [
'$scope',
function ($scope) {
//How to get access to userId ??
}]);
以下是我的控制器的外观:
<display-user-comment userId="user.id"></display-user-comment>
app.directive('displayUserComment', function () {
return {
restrict: 'E',
templateUrl: 'user_comment.html',
scope: {
userId: '='
},
controller: 'UserCommentController as userCmtCtrl'
};
})
app.controller('UserCommentController', [
'$scope',
function ($scope) {
//How to get access to userId ??
}]);
如何在我的控制器中访问隔离变量userId
这是plunker的url
您使用了错误的属性名称。当您为指令属性设置大小写时,它将改为使用破折号(userId=user id)呈现。这是更新的PRUNKR
您使用了错误的属性名称。当您为指令属性设置大小写时,它将改为使用破折号(userId=user id)呈现。这是更新的PRUNKR
将html中的用户id更改为用户id。angular“规范化”属性名,因此html中作为属性名的用户id将成为指令中的scope.userId 有关更多信息: Angular规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的规范化名称(例如ngModel)引用指令。但是,由于HTML不区分大小写,我们在DOM中以小写形式引用指令,通常在DOM元素(例如ng模型)上使用破折号分隔的属性 规范化过程如下所示: 从元素/属性的前面剥离x和数据。 将以:、-或_分隔的名称转换为camelCase
在html中将userId更改为userId。angular“规范化”属性名,因此html中作为属性名的用户id将成为指令中的scope.userId 有关更多信息: Angular规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的规范化名称(例如ngModel)引用指令。但是,由于HTML不区分大小写,我们在DOM中以小写形式引用指令,通常在DOM元素(例如ng模型)上使用破折号分隔的属性 规范化过程如下所示: 从元素/属性的前面剥离x和数据。 将以:、-或_分隔的名称转换为camelCase
$scope.user.id
?您正在向指令传递范围变量(user.id
)。所以它已经在作用域中。@JBNizet,不是,不是,它只是在隔离作用域中,我的控制器在我的指令之前得到实例(这对我来说没有多大意义。指令做什么?如果你不传递用户ID,它如何显示用户评论?请提供一个完整的、可复制的示例。我传递指令,但在我的控制器中,我尝试像$scope.userId、$scope.user.ID……那样获取它,但仍然未定义$scope.user.ID
?你是pas对指令使用作用域变量(user.id
),因此它已经在作用域中。@jbniset,不是,不是,它只在隔离作用域中,并且我的控制器在我的指令之前得到实例(这对我来说没有多大意义。该指令的作用是什么?如果不传递用户ID,它如何显示用户评论?请提供一个完整的、可复制的示例。我传递该指令,但在我的控制器中,我尝试像$scope.userId、$scope.user.ID……那样获取它,但仍然未定义。)