2014-10-08 128 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。

相关问题