AngularJs指令中的问号

Riv*_*ivi 11 angularjs angularjs-directive

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

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

我找了它,我看到的唯一想法是:'=?'的意思是什么?在angularJS指令中隔离范围声明?.但它并没有按照他在那里解释它的方式工作.我已成功运行我的应用程序,并没有抛出异常.

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

Der*_*ler 13

如果你没有添加?并且没有prop在你正在使用该指令的元素上放置属性,那么将抛出异常.

添加?,将属性标记为可选.如文档中所述$compile:

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

我认为文档可能在该领域有点过时了.NON_ASSIGNABLE_MODEL_EXPRESSION仅出现在旧版本的源代码中.

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