标签: angular-controller

AngularJS 如何从指令访问控制器范围

我正在尝试从指令函数访问父控制器范围。当我尝试获取它的值时,$scope.$parent它会返回该对象。但是当我尝试从该对象访问任何变量时,它会返回Undefined

app.controller('myCtrl', function ($scope, $http, $timeout) {

    $scope.init = function(){

        $http.get('url.php').success(function(data){
            $scope.assignmentInfo = data.record;
        });

    };
});


app.directive('getInfo', [function(){
    return {
        restrict: 'A',
        scope:{
            data:'=',
            title: '='
        },
        link:function(scope, elem, attrs){
            scope.$watch('data.visible', function(val){
                // do something

            });
        },
        controller: function($scope) {
            console.log($scope.$parent); // return an object

            console.log($scope.$parent.assignmentInfo); // return undefined


        },
        templateUrl: 'template.html'
    };
}]);
Run Code Online (Sandbox Code Playgroud)

首先console.log($scope.$parent)返回以下输出: 在此输入图像描述

$scope.$parent.assignmentInfo返回underfined

我如何访问assignmentInfo

angularjs angular-directive angular-controller

2
推荐指数
1
解决办法
2642
查看次数

从其他模块访问指令

我有两个不同的模块,第一个包含控制器的第二个指令。

基本上,我希望directive在我的渲染view。但是,随着modulesdirectivecontroller是不同的,它给错误。

如果我给的相同,module那么我希望为所有控制器提供服务的通用模块可以解决我的问题。

controller

angular.module('SlamModuleCtrl')
        .controller('SlambookExt',['$scope','$route','SlambookCollection', function($scope,$route) {
            console.log("slam controller")
        }]);
Run Code Online (Sandbox Code Playgroud)

Directive

angular.module('Genericmodule')
    .directive('appVersion', ['version', function (version) {
       return {
    restrict: 'E',  
    template: '<h1>version1</h1>'
    } 
    }])
Run Code Online (Sandbox Code Playgroud)

View

 <div ng-controller="SlambookExt">
     <app-version>1</app-version>
    </div>
Run Code Online (Sandbox Code Playgroud)

dependency-injection angularjs angular-directive angular-controller

1
推荐指数
1
解决办法
4686
查看次数

如何从 AngularJS 中的不同控制器更改表单值

我有以下 html(示例)

<div ng-controller='ctrl-1'>
    <form>
        <input type='text' ng-model='name'/>
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

和 js 文件为:

app.controller('ctrl-1',function($scope){
    $scope.name = 'john';
});

app.controller('ctrl-2',function($scope){
   /*
    Here I want to change value of 'name' field which is in 'ctrl-1'
    */
});
Run Code Online (Sandbox Code Playgroud)

如何在 angular js 中实现这一点?

angularjs angularjs-scope angular-controller

1
推荐指数
1
解决办法
2352
查看次数

AngularJs-将子模块注入其他子模块

我有一个听起来可能很愚蠢的场景,但是我被困住了,试图理解是什么导致了它不起作用。

我有一个现在有三个模块的角度应用程序

var app = angular.module('mainApp', ['ngRoute']); //parent module
var reviewModule = angular.module('reviewModule', ['mainApp']);  //child 1
var searchmodule = angular.module('searchmodule', ['mainApp']);  //child 2
Run Code Online (Sandbox Code Playgroud)

我已经在我的父模块(即mainApp)中设置了一些配置和默认字符串,我希望在其所有子模块中使用它。

另一方面,我的reviewModule和searchmodule(子模块)具有单独的控制器和服务,这些控制器和服务在不同的路线上使用。现在,问题来了,当我想将一个模块的服务用于另一个模块时,例如,如果我执行以下操作

var searchmodule = angular.module('searchmodule', ['mainApp', 'reviewModule']);
Run Code Online (Sandbox Code Playgroud)

在我的搜索模块控制器中使用reviewModule服务时,出现一个异常提示

Error: $injector:modulerr Module Error
Failed to instantiate module searchmodule
Run Code Online (Sandbox Code Playgroud)

两个子模块都具有相同的父模块,我想将一个子模块用于另一个子模块,并且不明白为什么会收到此异常。

更新:

我什至尝试使用以下行进行模块声明

var searchmodule = angular.module('searchmodule', ['reviewModule']);
Run Code Online (Sandbox Code Playgroud)

但这也会引起异常。

angularjs angularjs-scope angular-services angular-controller angular-module

0
推荐指数
1
解决办法
1757
查看次数