值不会从提供者angularjs传递给控制器

时间:2014-01-30 23:30:33

标签: javascript angularjs model-view-controller controller

所以我有一个控制器和一个提供程序,我试图将值从提供程序传递给控制器​​,没有什么太复杂。我已经通过几个关于这个问题的讨论和讨论,但非eof的建议正在发挥作用。最糟糕的是我在控制台中也没有出现任何错误,只是一个空白页面。我确信这是一个愚蠢的小我失踪但我很难过。

   var app = angular.module('myApp', ['ngRoute']);

   app.controller('SettingsCtrl', function($scope, Stocks) {
        $scope.stock = Stocks;
   });

app.provider('Stocks', function() {
    this.name = 'some name';
    this.$get = function() {
        this.name = 'Ford Motors'
        return this.name;
    };
});

app.config(function($routeProvider) {
$routeProvider
    .when('/settings', {
        templateUrl: 'templates/settings.html',
        controller: 'SettingsCtrl'
    })
    .otherwise({redirectTo: '/'});
  });

HTML

<!doctype html>
<html data-ng-app="myApp" data-ng-csp="">
    <head>
        <meta charset="UTF-8">
        <title>Presently</title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <link rel="stylesheet" href="css/main.css">
    </head>
    <body>
        <div ng-view></div>
        <script src="js/angular.js"></script>
        <script src="js/angular-route.js"></script>
        <script src="js/app.js"></script>
    </body>
</html>

settings.html

<div class="container">
     <div class="stock_name">{{stock.name}}</div>
</div>

2 个答案:

答案 0 :(得分:0)

您应该使用ngView

<body>
  <div ng-view></div>

并将内容放在模板中:

<!-- templates/settings.html' -->

<div class="container">
  <div class="stock_name">{{stock.name}}</div>
</div>

还重定向到您的路线:

.otherwise({redirectTo: '/settings'});

答案 1 :(得分:0)

查看您的Stocks提供商

app.provider('Stocks', function() {
    this.name = 'some name';
    this.$get = function() {
        this.name = 'Ford Motors'
        return this; //<-----instead of 'this.name'
    };
});

因为this.name总是返回name而不是Stocks object。现在,您的表达式{{stock.name}}将进行评估。