AngularJS ng绑定一次默认值

AngularJS ng绑定一次默认值,angularjs,Angularjs,我有一个用AngularJS构建的“视图”页面,其中显示模型的值,如下所示: <span ng-bind="doctor.address || '[Not defined yet]'"></span> 但是如果有一个有效的现有值作为doctor.address的值,我仍然会得到[尚未定义]文本 如果我使用以下选项: <span ng-bind="::doctor.address"></span> 这是标记: <span ng-bind="

我有一个用AngularJS构建的“视图”页面,其中显示模型的值,如下所示:

<span ng-bind="doctor.address || '[Not defined yet]'"></span>
但是如果有一个有效的现有值作为
doctor.address
的值,我仍然会得到
[尚未定义]
文本

如果我使用以下选项:

<span ng-bind="::doctor.address"></span>
这是标记:

<span ng-bind="::test || '[Not defined yet]'"></span>

但仍然不知道可能出了什么问题(异步调用是否会影响?)

这是一个plunk(来自Alex Pollan答案中的一个),在这里我可以重现这个问题(我使用了自定义承诺):

试试:

<span ng-bind="::(doctor.address || '[Not defined yet]')"></span>

希望能有帮助

更新:这很有趣,因为

<span ng-bind="::doctor.address || '[Not defined yet]'"></span>

。。。我也能用(AngularJs v1.4.x)


检查:

您使用的是哪个版本的angularjs?似乎适用于1.4.5@Nils,我正在使用angularjs 1.4.4似乎也适用于1.4.4@Nils,是的,你是对的。在我的代码中,像您的小提琴这样的简单示例可以很好地工作。我的
$scope.doctor
通过
restanglar
填充,它包含地址。奇怪。我将升级到angularjs 1.4.5并再次测试。我升级到1.4.8,我遇到了同样的问题。在我的代码中使用类似于您插入的东西进行测试非常有效。因此,当通过
Restangular
填充
$scope.doctor
时,可能会出现一些奇怪的情况,因为地址就在那里。在Restangular设置之前,是否定义了doctor.address值?一旦值被定义(!undefined),一次性绑定将停止监视。愚蠢的问题。。。调试代码时是否定义了response.address?根据文档:“一次性表达式稳定后将停止重新计算,如果表达式结果是未定义的值,则在第一次摘要之后会发生这种情况。”。。。而文本“[尚未定义]”使表达式被定义。这就是为什么它不能像预期的那样工作。如果删除该文本字符串,它将正常工作()。。。。我认为用一次性绑定使其工作是不值得的,结果也不会更好。我的建议是使用常规装订。
<span ng-bind="::test || '[Not defined yet]'"></span>
<span ng-bind="::(doctor.address || '[Not defined yet]')"></span>
<span ng-bind="::doctor.address || '[Not defined yet]'"></span>