0

我发现使用隔离范围将变量传递给指令对于同一指令的不同实例化的工作方式不同。

例如,这是一个基本指令,它接受一些任意数据并将其显示在一个简单的模板中:

var module = angular
    .module('myModule', [])
    .directive('isolatedScopeDirective', function() {
        return {
            restrict: 'CA',
            template: '<div>data: {{data}}</div>',
            scope: {
                data: '='
            }
        };
    });

这里有一些标记,它通过类实例化一次,一次通过注释:

<body ng-app='myModule' ng-init='anArray=[1,2,3]'>
    <h1>Directive using class:</h1>
    <div class='isolatedScopeDirective' data='anArray'></div>

    <h1>Same directive using annotation:</h1>
    <div isolated-scope-directive='{{data=anArray}}'></div>
</body>​​​​​​​​​​​​​​​​​

我从中得到的结果是:

Directive using class:
data: [1,2,3]

Same directive using annotation:
data:

(自己看:http: //jsfiddle.net/Prnbe

如果我从指令中删除范围属性,这意味着我停止使用隔离范围,那么在这两种情况下数据都会正确传递。对我来说,这说明我的设置是正确的,并且隔离范围的类或注释处理被破坏了。

难道我做错了什么?或者这是 AngularJS 中的一个错误?

4

1 回答 1

3

根据您的代码设置方式,我相信您的属性用法应该如下所示:

<div isolated-scope-directive data='aString'></div>

这个:

<body ng-app='myModule' ng-controller='myController'>
    <h1>Directive using class:</h1>
    <div class='isolatedScopeDirective' data='aString'></div>
    <br/>
    <h1>Same directive using annotation:</h1>
    <div isolated-scope-directive data='aString'></div>
</body>​​​​​​

输出:

Directive using class:
data: test

Same directive using annotation:
data: test
于 2012-12-09T21:26:42.930 回答