Javascript 在角坐标系中重复使用分部和控制器
我有一个页面的两个部分,其中包含一个几乎相同的表单。唯一的区别是父范围中对象的某些措辞和值。如何告诉视图或控制器使用一个范围变量而不是另一个 人为的例子:Javascript 在角坐标系中重复使用分部和控制器,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有一个页面的两个部分,其中包含一个几乎相同的表单。唯一的区别是父范围中对象的某些措辞和值。如何告诉视图或控制器使用一个范围变量而不是另一个 人为的例子: myApp.controller('ParentController', function($scope) { $scope.container = { someA: { a: 1, b: 3 }, someB: { a: 2, b: 4 } } }); myApp.controller('C
myApp.controller('ParentController', function($scope) {
$scope.container = {
someA: { a: 1, b: 3 },
someB: { a: 2, b: 4 }
}
});
myApp.controller('ChildController', function($scope) {
// Some scope variable that gets the value of container.someA
// or container.someB
$scope.result = $scope.someValue.a + $scope.someValue.b;
});
然后,我可以在使用相同模板的两个子视图中使用$scope.result
<div ng-controller="ParentController">
<!-- Include #1 -->
<div ng-include="someTemplate.html" ng-controller="ChildController"></div>
<!-- Include #2 -->
<div ng-include="someTemplate.html" ng-controller="ChildController"></div>
</div>
如何告诉include#1使用
$scope.container.someA
的值,如何告诉include#2使用$scope.container.someB
?这是指令的典型情况
app.directive("name", function() {
return {
restrict: "A",
templateUrl: "someTemplate.html",
scope: {
someValue: "="
},
controller: function($scope) {
$scope.result = $scope.someValue.a + $scope.someValue.b;
}
};
});
将其用作:
<div ng-controller="ParentController">
<!-- Include #1 -->
<div my-template some-value="container.someA"></div>
<!-- Include #2 -->
<div my-template some-value="container.someB"></div>
</div>
您必须注意隔离范围,它不会从父范围继承内容;因此,您必须在指令中传递所需的任何数据,就像
作用域:{someValue:=“}
使用公共表单并利用routeProvider的resolve属性根据位置指定正确的值一样。每个控制器将通过其声明注入该值。因此,如果您有两个URL,您将在$routeProvider
的resolve
属性中声明根据当前URL提供的两个不同值。不要有两个URL。包含内容同时显示在同一URL/视图上。