为什么我的“ng-click”和“ng-show”需要我传递控制器别名以及正在传递的函数
Why are my 'ng-clicks' and 'ng-shows' requiring I pass the controller alias along with the function being passed?
对不起,如果这很愚蠢,但我对Angular很陌生。
为什么 ng-click(和 ng-show,但没有函数)要求我将控制器名称与被调用的函数一起传递?
我的代码有效,我只是想知道如果我不使用"timeTrackerCtrl.something",为什么有些事情不起作用?这是我的代码:
索引.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="▶" />
</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">★</div>
<div ng-hide="timeTrackerCtrl.tempTask.star" ng-click="timeTrackerCtrl.tempTask.star = true" class="star">☆</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>
应用.js
(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 = [
{
...
}, {
...
}
];
})();
你应该
为此使用$scope
。
我建议你看看Dan Wahlin的"AngularJS基础"。这是一个非常好的教程。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 如何使函数的别名与javascript中的new一起使用
- 在 JavaScript 中为函数对象添加别名
- 为什么我的“ng-click”和“ng-show”需要我传递控制器别名以及正在传递的函数
- 如何将变量分配给函数内的别名控制器
- 传递Jquery别名到javascript函数
- 别名console.log函数并打印参数的名称
- 多态匿名函数类型别名
- 没有.apply的Javascript函数别名
- 类型错误:对函数别名的非法调用
- 如何创建一个具有许多其他对象函数别名的对象