【问题标题】:angularjs setting default values to display before evaluationangularjs设置默认值以在评估之前显示
【发布时间】:2012-10-28 19:34:33
【问题描述】:

我在现有网站上使用 angularJs 来实现非常简单的功能。

是这样的

<div ng-app>
    <div ng-controller="TermsController">
        <input type="checkbox" ng-model="terms.agree" />
        <input type="submit" value="{{terms.label}}" .. />
    </div>
</div>

我将 angular 插入页面中间,一切正常,除了 angular 加载速度很慢,用户可以在 angular 评估其值之前看到 {{terms.label}} 片刻。

我试图做类似的事情

<input type="submit" value="Default value" ng-model="terms.label" .. />

但它从未更新提交按钮的值。无论如何,我敢打赌我见过这样的东西,但也许输入字段没有值属性,只有模型。

任何关于如何在加载 angularJs 之前设置模板的指导都值得赞赏。

我知道我可以设置一些预加载器并在加载 angular 后替换它,但对于这个简单的任务来说,这似乎有点过头了。

感谢帮助

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您可以在加载过程中隐藏带有ng-cloak 属性的元素:

    <div ng-app>
        <div ng-controller="TermsController" ng-cloak>
            <input type="checkbox" ng-model="terms.agree" />
            <input type="submit" value="{{terms.label}}" .. />
        </div>
    </div>
    

    参考:http://docs.angularjs.org/api/ng.directive:ngCloak

    【讨论】:

      【解决方案2】:

      您可以对现有版本的 AngularJS 做的最好的事情就是给我们ng-bind 指令。从其文档中:

      曾经使用 ngBind 优于 {{ 表达式 }} 绑定是需要将绑定放入 浏览器暂时以其原始状态显示的模板 在 Angular 编译它之前。由于 ngBind 是一个元素属性,它 在页面加载时使绑定对用户不可见。

      要使ng-bind 在您的情况下工作,您必须将input 标记更改为button 标记,如下所示:

      <div ng-controller="TermsController">
          <input type="checkbox" ng-model="terms.agree">
          <button type="submit" ng-bind="terms.label">Before</button>
      </div>
      

      这是一个有效的 jsFiddle:http://jsfiddle.net/TL33r/2/

      您可以使用ng-cloak(有关更多信息,请参阅another question)但ng-cloak 将隐藏整个DOM 元素(及其子元素),而我相信您已经要求获得一个“默认”值当 AngularJS 启动时更改为绑定。

      【讨论】:

      • ok 回答了我的问题,但这似乎是一种解决方法,而不是一般的解决方案。我猜 angularJs 是为更具动态性的网站而设计的,在这些网站上可以显示预加载并在角度初始化完成时切换视图
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多