我想制作一个自定义指令,根据传递的模型做出决策。我跟着一个看起来很像我想做的例子here。
最后,我使用以下代码片段将JSON地址传递给指令:
<div><b>Address</b>
<address-source address="company.address"/>
</div>
这是指令:
AppDirectives.directive('addressSource', function ($compile) {
var template = '<span> {{address.id}} </span>';
var getTemplate = function(scope) {
console.log("address id: " + scope.address.id);
return template;
};
var linker = function(scope, element, attrs) {
element.html(getTemplate(scope)).show();
$compile(element.contents())(scope);
};
return {
restrict: "E",
replace: true,
link: linker,
scope: {
address: '='
}
};
});
地址在范围内,{{ address.id }}
已解决。但是,当我想用它进行计算时,比如将其记录到控制台,错误会显示scope.address未定义。我究竟做错了什么?我认为与工作示例没有区别。
答案 0 :(得分:0)
当我想用它进行计算时,比如将其记录到控制台
你在做什么计算?如果它不在linker
函数中,那么您将无法访问该地址,因为它位于您写入时所请求的隔离范围内:
scope: {
address: '='
}
答案 1 :(得分:0)