2012-11-08 74 views
5

我在現有網站上使用了angularJs來實現簡單的功能。angularjs設置默認值以在評估之前顯示

它是這樣的

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

我插在頁面的中央角度和不同的事實,即角加載很慢並且用戶可以看到一切正常{{terms.label}}爲在角度評估其值之前的一段時間。

我試圖做類似

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

,但它永遠不會更新提交按鈕的值。無論如何,我敢打賭,我已經看到這樣的事情,但也許輸入字段沒有價值屬性,只有模型。

有關如何在angularJs加載之前設置模板的指導意見。

我知道我可以設置一些預加載器,並在角度加載後替換它,但對於這個簡單的任務來說,它似乎是一種矯枉過正。

感謝您的幫助

回答

8

你可以用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踢的時候有約束力。

+0

好的回答我的問題,但它似乎是一種解決方法,而不是一個通用的解決方案。 我猜angularJs是專爲更動態的網站,它可以顯示角度初始化完成預加載和切換視圖完成 –

10

您可以加載期間隱藏與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