0

我正在尝试构建一个非常简单的 Angular 指令:

app.directive("myDirective", function () {
    return {
        template: "{{result}} {{result.startTime}}",
        scope: {
            result: '@result'
        }
    };
});

我在视图中以这种方式使用它:

<div my-directive result="{{result}}"></div>

问题是{{result}}正确显示(作为json)下流,而{{result.startTime}}没有显示,尽管显示{{result}}包含startTime属性。

4

3 回答 3

1
app.directive("myDirective", function () {
    return {
        template: "{{result}} {{result.startTime}}",
        scope: {
            result: '='
        }
    };
});

我相信您在那里使用了错误的隔离范围符号,@ 将为您提供传入的变量的字符串表示 = 将双向绑定,如果名称与属性相同,您可以将其省略,只需使用 = 作为如上所示。

于 2013-09-03T16:36:55.173 回答
1

尝试使用“=”而不是“@”。“@”将其作为字符串引用引入。

scope: {
  result: "="
}
于 2013-09-03T16:41:14.383 回答
1

2个问题:

1 您需要传入模型,而不是插值字符串。

<div my-directive result="result"></div>

2 您需要将值分配给指令,因此请使用“=”而不是“@”,这为您提供了从指令返回到 DOM 的单向绑定。

app.directive("myDirective", function () {
    return {
        template: "{{result}}, {{result.startTime}}",
        scope: {
            result: '='
        }
    };
});

Working Demo

于 2013-09-03T16:43:00.847 回答