【问题标题】:Angular in 60ish minutes routes issues60 分钟内的 Angular 路由问题
【发布时间】:2015-06-04 02:01:22
【问题描述】:

我想知道是否有人可以快速浏览一下我的代码,如果我遗漏了什么,请告诉我。我正在尝试学习 Angular.js,并且在 60 分钟的视频中一直在使用著名的 Angular.js。然而,我遇到的问题是 angular 已经更新了,而且事情有点不同。结果,我无法正确编排我的路线。非常感谢任何人提前。

我真正想知道的是,任何人都可以告诉我为了使这些路线正常工作,我缺少什么吗?

以下是我的 html 中的脚本。我跟着这本书,因此它们是我的 index.html 页面中的脚本标签。

var demoApp = angular.module('demoApp', ['helperModule']);
    var controllers = {};

    demoApp.controller("CustomersController",  function ($scope){
        $scope.customers = [
                {name: 'Dave Jones', city: 'pheonix'},
                {name: 'Dave Jones', city: 'New york'},
                {name: 'Jones suman', city: 'pheonix'},
                {name: 'Naresh babu', city: 'Hyderabad'}
            ];
        });
    var demoApp = angular.module('demoApp', ['ngRoute']);
        demoApp.config(function($routeProvider){
            $routeProvider
                .when('/',
                    {
                        controller: "SimpleController",
                        templateUrl: "views/view1.html"
                    })
                .when('partial2',
                    {
                        controller: "SimpleController"
                        templateUrl: "views/view2.html"
                    })
                .otherwise({ redirectTo: "/"})
        });

        $scope.addCustomer = function(){
            $scope.customers.push({name: $scope.newCustomer.name, city: $scope.newCustomer.city});
        }
<script src = "angular-route.js"></script>

这分别是我的视图#1 和视图#2。我觉得一切都是正确的,但是我无法让任何客户的名字出现。

<div cass = "container">
<h2>View 1</h2>
    Name: 
    <input type = "text" data-ng-model="filter.name" />
    <ul><li data-ng-repeat="cust in customers | filter:filter.name"></ul>
    Customer Name: <br />
    <input type= "text" data-ng-model="newCustomer.name" />
    Customer City: <br />
    <input type= "text" data-ng-model="newCustomer.city" />
    <button data-ng-click="addCustomer()"> Add Customer </button>   
    <a href="#/view2"> View 2</a>   
</div>



<div cass = "container">
<h2>View </h2>
<div ng-controller="CustomersController">
    Search: <input type = "text" ng-model="searchText" />
    {{ searchText }}
    <br />
    <h3> Customers </h3>
    <table>
        <tr ng-repeat="cust in customers | filter:city">
                <td>{{ cust.name }}</td>
                <td>{{ cust.city }}</td>
                <td>{{ cust.total | currency}} </td>
            </tr>
    </table>
</div>

【问题讨论】:

  • 您在查看控制台时是否有任何错误?
  • 我猜controller: "SimpleController" 之后缺少的, 是复制粘贴问题。此外,$scope.addCustomer 不在具有$scope 的内部。你能给我们展示一个正在运行的小提琴吗?
  • @SergiuParaschiv 我将您的指点包括在我的回答中。谢谢:)

标签: javascript angularjs angularjs-controller angularjs-module


【解决方案1】:

您正在覆盖出现问题的应用

var demoApp = angular.module('demoApp', ['helperModule']); 开始,然后 你又声明了demoApp var demoApp = angular.module('demoApp', ['helperModule']);

解决此问题的更好方法是只声明一次具有所有依赖项的应用程序,然后继续使用控制器、指令、工厂等组件对其进行修改。

代码

//could remove `helperModule` module if not used
var demoApp = angular.module('demoApp', ['helperModule', 'ngRoute']); 
demoApp.config(function($routeProvider) {
    $routeProvider
        .when('/', {
            controller: "SimpleController",
            templateUrl: "views/view1.html"
        })
        .when('partial2', {
            controller: "SimpleController",
            templateUrl: "views/view2.html"
        })
        .otherwise({
            redirectTo: "/"
        })
});

demoApp.controller("CustomersController", function($scope) {
    $scope.customers = [{
        name: 'Dave Jones',
        city: 'pheonix'
    }, {
        name: 'Dave Jones',
        city: 'New york'
    }, {
        name: 'Jones suman',
        city: 'pheonix'
    }, {
        name: 'Naresh babu',
        city: 'Hyderabad'
    }];

    $scope.addCustomer = function() {
        $scope.customers.push({
            name: $scope.newCustomer.name,
            city: $scope.newCustomer.city
        });
    };
});

【讨论】:

  • 正确,通过定义模块函数的第二个参数...If specified then new module is being created. If unspecified then the module is being retrieved for further configuration.docs.angularjs.org/api/ng/function/angular.module正在使用中)
  • 我同意这里,你不应该使用var demoApp = 两次。此外,您似乎将控制器命名为 CustomersController,但在您的路由中调用 SimpleController
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2016-12-07
  • 2013-05-14
相关资源
最近更新 更多