Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在角坐标系中重复使用分部和控制器_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

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/视图上。