在HTML中将默认值设置为ng-bind

时间:2014-09-11 14:42:43

标签: angularjs angularjs-ng-init ng-bind

我想将默认值设置为范围,由ng-bind选取。我这样做:

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

在此示例中,范围设置为innerHTML =&#39;全部&#39;当页面加载时。

但是,我希望有一种方法可以做到这一点而不需要使用ng-init,可能是这样的:

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

3 个答案:

答案 0 :(得分:17)

在您的控制器中:

$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>

答案 1 :(得分:4)

||运算符也适用于ngBind,就像在纯JavaScript中一样:

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

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

答案 2 :(得分:2)

来自angularjs doc

  

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

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