Javascript AngularJS自定义指令如何访问对象值?
这是我调用指令的html代码Javascript AngularJS自定义指令如何访问对象值?,javascript,angularjs,angularjs-directive,directive,Javascript,Angularjs,Angularjs Directive,Directive,这是我调用指令的html代码 <div ng-repeat="feat in templateAttributes track by $index"> <md-input-container flex="50"> <feat-directive feat="{{feat}}" /> </md-input-container> </
<div ng-repeat="feat in templateAttributes track by $index">
<md-input-container flex="50">
<feat-directive feat="{{feat}}" />
</md-input-container>
</div>
然后我像这样稍微修改代码
link: function(scope, element, attr)
并尝试使用JSON解析器
var feat1 = JSON.parse(attr.feat);
在此更改之后,下面的代码将在inputbox中显示{{feat.Value}}
<input type="text" id="{{feat.Name}}" value="{{feat.Value}}" ng-model="feat.Value" />
AngularJS指令创建自己的
范围
,您可以使用范围隔离访问父范围
您可以添加范围
属性作为回报
return {
restrict: 'E',
scope: {
feat: '=feat'
}
...
}
如果属性和范围值相同,您不需要使用名称,只需使用feat:'='
@maurycy,然后如何将其包含在任何建议中。我认为您可以尝试feat:'='
而不是feat:'=feat'
,带=
符号的字符串表示指令
@SanjayNishad中属性的名称
,您的意思是sureApp.directive('featDirective',function(){return{restrict:'E',scope:{feat:'=feat'},模板:
并删除{}
要将作用域传递到指令,链接:函数(作用域、元素、专长){
这是错误的,第三个参数用于元素的属性,所以它应该是:链接:函数(作用域、元素、属性){
,然后是attrs.feat
@maurycy我也尝试过了,它也有值“{”Name:“DisplayName”数据类型“:”字符串“,”说明“:”显示名称“,”必填“:真“,”可编辑“:真“,”扩展“:假“,”MinLength“:3,“MaxLength“:100,“AllowedValues“:”值“:”}”
当尝试访问attr.feat.AllowedValues
时,其未定义的调整将
更改为
,并且您应该很好。顺便说一句:据我所知,自动关闭指令没有得到完全支持(我不确定angular的最新版本)@maurycy根据您的建议更改后,我得到的属性值如下$attr:Object feat:“feat”
<input type="text" id="{{feat.Name}}" value="{{feat.Value}}" ng-model="feat.Value" />
return {
restrict: 'E',
scope: {
feat: '=feat'
}
...
}