Javascript 为什么我的';ng咔哒声';和';ng节目';需要我将控制器别名与正在传递的函数一起传递吗?

Javascript 为什么我的';ng咔哒声';和';ng节目';需要我将控制器别名与正在传递的函数一起传递吗?,javascript,angularjs,Javascript,Angularjs,对不起,如果这是愚蠢的,但我是相当新的角度 为什么ng click(和ng show,但没有函数)要求我在调用函数的同时传递控制器名称 我的代码是有效的,我只是想知道,如果我不使用“timeTrackerCtrl.something”,为什么有些东西不起作用? 这是我的密码: index.html <!DOCTYPE html> <html ng-app="timeTrackerApp"> <head> <script src="

对不起,如果这是愚蠢的,但我是相当新的角度

为什么ng click(和ng show,但没有函数)要求我在调用函数的同时传递控制器名称

我的代码是有效的,我只是想知道,如果我不使用“timeTrackerCtrl.something”,为什么有些东西不起作用? 这是我的密码:

index.html

<!DOCTYPE html>
<html ng-app="timeTrackerApp">
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
        <script type="text/javascript" src="app.js"></script>
    </head>
    <body ng-controller="TimeTrackerController as timeTrackerCtrl">
        <!--  Task Form Container  -->
        <div>
            <!--  Task Form  -->
            <div>
                <form name="taskForm" ng-submit="timeTrackerCtrl.addTask(tempTask)">
                    <input ng-model="timeTrackerCtrl.tempTask.name" required type="text" placeholder="what are you working on?" title="Task Name" />
                    <select ng-model="timeTrackerCtrl.tempTask.project" ng-options="project.name as project.name for project in timeTrackerCtrl.projects"  title="name">
                        <option value="">+ project</option>
                    </select>
                    <input type="submit" value="&#9654;" />
                </form>
            </div>
        </div>
        <!--  Tasks Container -->
        <div id="taskContainer">
            <!--  Live Preview -->
            <div class="taskLine" ng-show="timeTrackerCtrl.tempTask.name">
                <div class="date"><p>{{timeTrackerCtrl.today | date:'d MMM'}}</p></div>
                <div>
                    <div ng-show="timeTrackerCtrl.tempTask.star" ng-click="timeTrackerCtrl.tempTask.star = false" class="star activeStar">&#9733;</div>
                    <div ng-hide="timeTrackerCtrl.tempTask.star" ng-click="timeTrackerCtrl.tempTask.star = true" class="star">&#9734;</div>
                    <div class="taskName">{{timeTrackerCtrl.tempTask.name}}</div>
                    <div><span ng-show="timeTrackerCtrl.tempTask.project != null" class="projectBlock">{{timeTrackerCtrl.tempTask.project}}</span></div>
                    <div ng-repeat="tag in timeTrackerCtrl.tempTask.tags track by $index" class="tagBlock">{{tag}}</div>
                </div>
            </div>
            <div ng-repeat="task in timeTrackerCtrl.tasks">
                <div ng-show="task.timing" ng-click="timeTrackerCtrl.taskEnd(task.end);"></div>
                <div>{{task.name}}</div>
                <div>{{task.project}}</div>
                <div ng-repeat="tag in task.tags track by $index">{{tag}}</div>
                <div>{{task.end ? timeTrackerCtrl.finalTime(task.start,task.end) : 'currentTime'}}</div>
            </div>
        </div>
    </body>
</html>
你应该用这个

我建议你去看看。这是一个非常好的入门教程。

你应该使用它

我建议你去看看。这是一个非常好的入门教程。

你应该使用它

我建议你去看看。这是一个非常好的入门教程。

你应该使用它


我建议你去看看。这是一个非常好的入门教程。

完成对@kozlice的解释:如果您使用$scope而不是这个,您将能够在没有控制器实例的情况下调用函数。噢,这就是为什么我在教程中到处都看到$scope。我只上过codeschool.com上的免费课程,看起来很不错,但只使用了“this”,似乎从未遇到过这个问题。有没有不使用$scope的场景我应该使用“this”来代替?很可能没有(除非你在指令控制器中做了一些非常复杂的事情)完成对@kozlice的解释:如果您使用$scope而不是这个,您将能够在不使用controller.Aw实例的情况下调用函数,这就是为什么我在教程中到处都看到$scope。我只上过codeschool.com上的免费课程,看起来很不错,但只使用了“this”,似乎从未遇到过这个问题。有没有不使用$scope的场景我应该使用“this”来代替?很可能没有(除非你在指令控制器中做了一些非常复杂的事情)完成对@kozlice的解释:如果您使用$scope而不是这个,您将能够在不使用controller.Aw实例的情况下调用函数,这就是为什么我在教程中到处都看到$scope。我只上过codeschool.com上的免费课程,看起来很不错,但只使用了“this”,似乎从未遇到过这个问题。有没有不使用$scope的场景我应该使用“this”来代替?很可能没有(除非你在指令控制器中做了一些非常复杂的事情)完成对@kozlice的解释:如果您使用$scope而不是这个,您将能够在不使用controller.Aw实例的情况下调用函数,这就是为什么我在教程中到处都看到$scope。我只上过codeschool.com上的免费课程,看起来很不错,但只使用了“this”,似乎从来没有遇到过这个问题。有没有不使用$scope的场景我应该使用“this”来代替?很可能没有(除非你在指令控制器中做了一些非常复杂的事情)。
(function() {

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

    app.controller('TimeTrackerController', function() {
        this.tasks = taskObjects;
        this.projects = projectsInfo;
        this.today = Date.now();

        this.tempTask = {};
        this.addTask = function() {
            this.tempTask.star = false;
            this.tempTask.start = Date.now();
            this.tempTask.timing = true;
            this.tasks.push(this.tempTask);

            this.tempTask = {};
        };

        this.taskEnd = function(taskend) {
            taskend = Date.now();
            alert(taskend);
            return taskend;
        };

        this.finalTime = function(starttime,endtime) {
            totalTime = endtime - starttime;
            return totalTime;
        };
    });

    var projectsInfo = [
        {
          ...
        }, {
          ...
        }
    ];

    var taskObjects = [
        {
          ...
        }, {
          ...
        }
    ];

})();