AngularJs指令中的问号

时间:2014-09-15 14:49:35

标签: angularjs angularjs-directive

我在范围属性定义中看到了一些使用问号('?')的指令,如下所示:

    app.directive('userInfo', function() {
        return {
        restrict: 'A',
        scope: {prop: '=?'},
        templateUrl: 'some/template/url',
    };

我已经找到了它,我看到的唯一想法是:what's the meaning of '=?' in angularJS directive isolate scope declaration?。但它并没有按照他在那里解释它的方式工作。我已成功运行我的应用程序,并且没有抛出异常。

有人可以详细说明一下吗?

1 个答案:

答案 0 :(得分:13)

如果您添加?并且在您的元素上添加prop属性,那么您正在使用该指令在,然后会抛出异常。

添加?,将该属性标记为可选。如documentation for $compile中所述:

  

你可以使用=来避免这种行为吗?或=?attr以便将属性标记为可选。

我认为文档可能在该领域有点过时了。 NON_ASSIGNABLE_MODEL_EXPRESSION仅出现在older revisions of the source

请注意,只有在您尝试写入范围属性时才会抛出异常。我把一个快速的傻瓜拼凑起来展示这个问题:http://plnkr.co/edit/hjUq6ZisuRG2C3mZpRDj?p=preview