我知道我们可以通过简单地使用ng-repeat创建子范围,而无需在角度上创建新的控制器。 例如
$scope.persons =
[
{id: 0, name: "John"},
{id: 1, name: "Jack"},
{id: 2, name: "Jane"}
]
然后
<p ng-repeat="person in persons">{{id}} - {{name}}</p>
但我的问题是,我能用1个单一对象实现这个范围界定吗? 例如:
$scope.ThePerson =
{
id: 0,
name: "John",
badgenumber: 68204,
// ... etc
}
然后用于:
<p ng-should-scope-to="ThePerson">
{{id}} - {{name}}
<input type="text" ng-model="badgenumber" />
</p>
而不是创建一个新的控制器或不必使用&#34; ThePerson.something&#34;每一个约束力? 这可能吗?
答案 0 :(得分:1)
这可以使用一个非常简单的指令:
app.directive('shouldScopeTo', function() {
return {
restrict: 'A',
scope: true, // a new child scope
link: function(scope, elem, attrs) {
angular.extend(scope, scope.$eval(attrs.shouldScopeTo));
}
};
});
我们创建一个新的子范围,以免干扰父范围。然后我们使用给定对象扩展新的子范围,使该对象的属性直接可用于范围。