捕获对$ scope属性的访问权限

时间:2014-02-06 09:00:29

标签: angularjs angularjs-scope

是否可以捕获以下内容:如果我有一些模板

<div ng-controller="SomeController">
    {{notthere}}
</div>

并且notthere未在控制器$scope中定义,我是否可以触发回调来处理此问题?像:

$scope.$catch(function(name) {
    // name === 'notthere'
    return 'someval';
}

BR, 丹尼尔

3 个答案:

答案 0 :(得分:1)

嗯,你可以做到

<div ng-controller="SomeController">
    {{notthere || 'someval'}}
</div>

但我不确定这是否符合您的要求

答案 1 :(得分:0)

我不这么说。 Angular(默认情况下)将在编译时添加nothere作为链接(与控制器的作用域)链接的属性。

您可能会在指令中使用preLink做一些奇特的事情,但没有直接的方法可以做到这一点。

BTW,nothere自动添加到范围的事实可能非常有益。它可以很容易地声明您不需要关注控制器的“仅查看”属性(用于验证等)。

答案 2 :(得分:0)

您可以尝试这样的事情

<div ng-controller="SomeController",ng-if="nothere!==undefined">
    {{nothere}}
</div>
<div ng-controller="SomeController",ng-if="nothere===undefined">
 someValue
</div>