AngularJs指令中的问号

AngularJs指令中的问号,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我看到一些指令在范围属性定义中使用问号(“?”),如下所示: app.directive('userInfo', function() { return { restrict: 'A', scope: {prop: '=?'}, templateUrl: 'some/template/url', }; 我已经找过了,我唯一看到的是这个:。但他在那里解释的方式不起作用。我已成功运行我的应用程序,未引发任何异常 有人能

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

    app.directive('userInfo', function() {
        return {
        restrict: 'A',
        scope: {prop: '=?'},
        templateUrl: 'some/template/url',
    };
我已经找过了,我唯一看到的是这个:。但他在那里解释的方式不起作用。我已成功运行我的应用程序,未引发任何异常

有人能详细说明一下吗?

如果不添加
并且不在使用指令的元素上放置
prop
属性,则会引发异常

添加
,将属性标记为可选。如报告中所述:

您可以使用=?或=?attr以将属性标记为可选

我认为这方面的文档可能有点过时<代码>不可分配的模型表达式仅显示在中


请注意,只有在尝试写入范围属性时才会引发异常。我用了一个简短的例子来说明这个问题:

你的应用程序的代码是什么?如果我们不知道它的代码,我们怎么解释呢?根据你发送的链接,不应该抛出异常,因为问号使定义的范围变量“prop”成为可选的。在我的例子中,我没有使用“?”并且没有抛出异常是的,我得到了它。这个问题并不难。我的问题是,当我没有使用“?”并且没有在元素中使用“prop”属性时,不会引发异常。所以我认为使用“?”@user1857251有不同的解释。我更新了我的答案。希望它现在更有帮助:)是的,我认为文档已经过时了。我已经尝试过了,正如您所说的,当您试图更改scope属性的值时,会出现一个异常,因为它未定义(如果您没有使用“?”)。谢谢