2014-10-08 131 views
2

我目前使用的是AngularJs,因爲我過去曾經使用KnockoutJs,所以我想使用類似KnockoutJs的屬性with屬性,但似乎無法找到我正在尋找。我AngularJs $範圍目前看起來是這樣的什麼是AngularJs中KnockoutJs的WITH的等效html屬性

$scope.data = { 
    selectedCountry: ..., 
    ... 
}; 

現在SELECTEDCOUNTRY是一個JS對象,在HTML我希望能夠做這樣的事

<div with="data.selectedCountry"> 
    <div ng-bind="name"/> 
    <div ng-bind="prop1"/> 
    <div ng-bind="prop2"/> 
<div> 

,而不必做什麼我目前在做,這是

<div> 
    <div ng-bind="data.selectedCountry.name"/> 
    <div ng-bind="data.selectedCountry.prop2"/> 
    <div ng-bind="data.selectedCountry.prop3"/> 
<div> 

有沒有辦法在AngularJs做到這一點?任何幫助將非常感激。謝謝。

+0

真的很簡短的答案是,沒有相當於'與'。唯一接近的就是'ngController'。 – 2014-10-08 21:47:47

回答

5

最接近的將是ng-init指令。

<div ng-init="c = data.selectedCountry"> 
    <div ng-bind="c.name"></div> 
    <div ng-bind="c.prop1"></div> 
    <div ng-bind="c.prop2"></div> 
</div> 

雖然它不完全一樣敲除(在這裏你不需要一個別名),它應該讓你的生活更容易,因爲別名是比編寫完整的導航屬性路徑更好。

+3

'ngInit'與Knockout的''with'絕對不一樣。在你的例子中,你只是添加一個新的屬性到範圍。 – 2014-10-08 21:46:10

+1

Michael - 同意。我的編輯太快了。我剛剛在我的回答中提到了這一點。 :)但我認爲ng-init會幫助克雷格。 – 2014-10-08 21:48:32

+1

@KrishnaTejaVeeramachaneni +1。我對你的代碼做了一些編輯,把它修改爲「最小」來表達這一點......希望可以接受! – 2014-10-08 21:57:52

2

我已經爲此搜索了很多。我發現無非只是一招更好:

您可以通過這個模擬此功能:

<div ng-repeat="item in [data.selectedCountry]"> 
    <div ng-bind="name"/> 
    <div ng-bind="prop2"/> 
    <div ng-bind="prop3"/> 
<div> 

TG。

相關問題