angularjs具有特定范围的部分模板

时间:2014-01-02 11:39:56

标签: javascript angularjs templates

我想在我的主模板中包含一个部分模板,但在调用部分模板时具有特定的范围。

例如,这是我的主要模板(非常简化,实际模板更复杂,因此这里不能使用ng-iterate):

<h1>title, my item1 name is {{item1.name}}</h1>
....
<div ng-view="myPartial.html" scope="item1"></div>
....
<div ng-view="myPartial.html" scope="item2"></div>
...

myPartial.html就像

<input ng-model="name" />...

数据:

{item1: {name:"test1"}, item2: {name: "test2"}}

预期结果:

<1>title, my item1 name is test1</h1>
....
<div><input value="test1" /></div>
....
<div><input value="test2"></div>
...

你会如何使用angularjs做这种事?

我应该使用myPartial.html作为模板创建特定指令吗? 感谢

3 个答案:

答案 0 :(得分:2)

由于ng-view只能在页面中找到一次,我使用ng-includeng-init来初始化特定控制器的范围:

<div ng-include="'/myPartial.html'" ng-init="init(items.item1)" ng-controller="YourController"></div>

控制器:

this.app.controller("YourController", function YourController($scope) {
    $scope.init = function(item){
        $scope.item = item;
    }
});

答案 1 :(得分:1)

<div ng-view="myPartial.html" ng-controller="yourController"></div>

然后创建yourController作为角度控制器(或使用现有)并将数据分配给$scope.item1

答案 2 :(得分:0)

如果您的商品格式与您想要使用ngInclude的格式相同。 ngView指令用于不同的目的。

控制器:

$scope.items = {item1: {name:"test1"}, item2: {name: "test2"}};

主要观点:

<div ng-repeat="item in items" ng-include="'myPartial.html'"></div>

myPartial.html:

<h2>{{item.name}}</h2>...