18

我想为范围设置一个默认值,由 ng-bind 获取。我这样做是这样的:

<button>Show <span data-ng-bind="data.text" data-ng-init="data.text = 'All';"></span> Names</button>

在此示例中,页面加载时跨度设置为 innerHTML = 'All'。

但是,我希望有一种方法可以在不需要使用 ng-init 的情况下执行此操作,可能类似于:

<button>Show <span data-ng-bind="data.text = 'All';"></span> Names</button>
4

3 回答 3

18

在您的控制器中:

$scope.data = {};
$scope.data.text = "All";

您的标记:

<button>Show <span data-ng-bind="data.text"></span> Names</button>

或者,如果您想跳过控制器代码(由 Kohjah Breese 的评论提供):

    <button>Show <span data-ng-bind="data.text || 'All'"></span> Names</button>

大概在你的控制器的其他地方会有一些代码会切换这个值,但为了初始化,应该这样做。

编辑:或者,正如 tymeJV 在评论中指出的那样(添加了 ng-cloak,因此 {{}} 语法不会向用户显示):

<button>Show <span ng-cloak>{{data.text || "All"}}</span> Names</button>
于 2014-09-11T14:55:22.640 回答
5

||运算符也可以ngBind像在纯 JavaScript 中一样工作:

<span ng-bind="myVariable || 'My default value'"></span>

如果变量已填充,则输出myVariable,否则使用替代'My default value'方法。

于 2015-06-19T11:31:27.587 回答
2

来自angularjs 文档

ngInit 唯一合适的用途是为 ngRepeat 的特殊属性设置别名 [...] 除了这种情况,您应该使用控制器而不是 ngInit 来初始化作用域上的值。

所以我想在你的控制器中初始化 data.text 对 angularjs 来说很好

于 2014-09-11T14:51:40.260 回答