javascript-将Angular服务中的JSON对象传递给指令
作者:互联网
我正在尝试将JSON对象从Angular服务传递给指令.实际上,我只是想随时随地$compile一个指令并将一个对象传递给该指令.
它看起来应该像这样:
var template = '<gmap-info-window layer="layer" marker="marker"></gmap-info-window>',
content = $compile(template)(searchScope);
而该指令如下所示:
.directive('gmapInfoWindow', [function() {
scope: {
marker: '=',
layer: '='
},
link: function(scope, element, attrs) {
// access objects in attrs
}
}]);
那不行我在attrs.marker和attrs.layer中获得的只是纯字符串.
现在,我已经尝试并实现的是使用$compile函数的transcludeFn函数.它可行,但是我不认为这是完成我要完成的工作的正确方法.
var template = '<gmap-info-window></gmap-info-window>',
content = $compile(template)(searchScope, null, {
parentBoundTranscludeFn: function() {
return {
marker: _marker,
layer: _layer
};
}
});
而该指令如下所示:
.directive('gmapInfoWindow', [function() {
scope: {},
link: function(scope, element, attrs, controller, transcludeFn) {
var objects = transcludeFn();
// The marker and layer are in objects now!
}
}]);
我无法想象没有其他方法可以做我想做的事.这看起来有点脏.感谢您的见解!
解决方法:
All I get in the attrs.marker and attrs.layer is plain strings.
您需要了解,根据定义,属性始终是字符串.您不可能在那里有对象. Angular的作用是根据指令的作用域配置在适当的上下文(编译范围)中评估这些属性(字符串)的值.然后,此评估的结果在链接功能的作用域对象中可用.这是您需要使用的:
link: function(scope, element, attrs) {
console.log(scope.marker, scope.layer);
}
标签:angularjs,angularjs-directive,angularjs-service,json,javascript 来源: https://codeday.me/bug/20191119/2038650.html