angular js:无法将值从控制器传递到包含页面的html

版本2

我有一个标题对于所有页面仍然通用。因此,我将其包含在索引页面中,如下所示。

index.html

<!DOCTYPE html>
<html ng-app="myApp">
    <head>
        <script src="assets/lib/angular.js"></script>
        <script src="assets/lib/angular-route.js"></script>

        <script src="headerController.js"></script>
        <script src="HomeController.js"></script>
        <script src="app.js"></script>
    </head>
    <body>
        <div class="header" ng-include="'header.html'"></div>
        <div class="main" ng-view></div>
    </body>
</html>

header.html

<ul>
    <li>{{vm.myName}}"></li>
</ul>

我的app.js文件如下所示。

( function () {

    angular.module('myApp', [
        'ngRoute',
        'myApp.header',
        'myApp.home',
    ])

    .config(['$routeProvider', function($routeProvider) {
        $routeProvider
        .when('/home', {
            controller: 'HomeController',
            templateUrl: 'homeView.html',
            controllerAs: 'vm'
        })
        .otherwise({
            redirectTo: '/home'
        });
    }]);

})();

我不包括家庭控制器或视图,因为它们现在在这里的重要性降低了。我想做的是,将值传递给headerController.js视图header.html

如您所见,header.html中只有一个变量

另一方面,headerController.js与后端服务进行通信并获取此结果。而且,我确定该服务正在返回数据,我可以在控制台中看到它,它看起来像这样:

{"myName":"Amelia Earheart"}

这是我的headerController.js

(function() {

    angular
        .module('myApp.header', [])

        .factory('myCommonService', function($http) {
            var baseUrl = 'api/';
            return {
                getName:function() {
                    return $http.get(baseUrl + 'getName');
                }
            };
        })

        .controller('CommonController', function($scope, $routeParams, myCommonService) {

            var vm = this;  
            myCommonService.getName().success(function(data) {
                vm.myName   = data.myName;
            });

        });
})();

谁能说出为什么我没有在html视图中获得价值?

帕克曼

您应该将视图链接到控制器。实际上,您的CommonController在任何地方都没有被引用。尝试将ng-controller属性添加到div.header:

<!DOCTYPE html>
<html ng-app="myApp">
    <head>
        <script src="assets/lib/angular.js"></script>
        <script src="assets/lib/angular-route.js"></script>

        <script src="headerController.js"></script>
        <script src="HomeController.js"></script>
        <script src="app.js"></script>
    </head>
    <body>
        <div class="header" ng-controller="CommonController" ng-include="'header.html'"></div>
        <div class="main" ng-view></div>
    </body>
</html>

而且,您还需要将该值绑定到$ scope(这是您的模型)而不是this您的控制器应如下所示:

.controller('CommonController', function($scope, $routeParams, myCommonService) {

    myCommonService.getName().success(function(data) {
        $scope.myName   = data.myName;
    });

});

如果要在标题视图中使用“ vm”,则可以将ng-controller更改为ng-controller="CommonController as vm"这应该可以解决问题。如果不这样做,则必须将header.html更新为:

<ul>
    <li>{{myName}}</li>
</ul>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular.js:将日历值从指令传递到控制器

无法从Angular js的html页面中将用户名和密码传递给控制器

将Browserify与Angular JS一起使用--将服务传递到控制器

设置angular js应用程序index.html页面以仅包含singe控制器

将值从Angular控制器传递到C#API

如何将变量从Angular控制器传递到html <script> </ script>?

如何将JSON数据从C#控制器传递到angular js?

Angular.js将错误消息从服务传递到控制器$ scope

angular js,将数据作为参数从视图传递到控制器

如何在angular 1.4.4中将值从控制器传递给html

Angular JS 没有从 HTML 到控制器获取范围值

如何将列表从C#angular传递到Angular控制器?

Angular JS无法识别控制器

无法在 Angular 的 ng-bind 中将数据传递到控制器中

将数据从JSONP回调函数传递到Angular控制器

将Angular模态数据传递到主控制器

从控制器导航到angular js中的其他页面

哪些参数要传递到Angular JS自定义指令控制器中?

如何在Angular JS中将数据从工厂传递到控制器?

无法将iframe元素从指令传递给Angular控制器

如何将值传递给 . Angular 中的网络控制器

Angular指令:使用“&”号方法将值传递给控制器

如何从Angular中的ng-repeat将索引值传递给控制器

使用angular.js在控制器页面中未获得任何值

将数组变量从控制器传递给 Angular 中的 html

Angular 指令将参数传递给元素的 .html() 中的控制器函数

无法将数据从控制器正确绑定到自定义指令模板Angular

Angular:将参数从$ routeProvider传递给控制器

从控制器将参数传递给Angular Factory