这是我在mvc视图中的链接,它通过调用函数调用重定向到详细信息视图。请看下面。
<a href="/Home/Details" class="label label-primary" ng-click="addTask(c)">View Details</a>
TasksController.js
var lines =[]
$scope.addTask= function(c)
{
lines.push(c);
return lines;
}
alert(lines);
由于某种原因,返回值(行)变为null。我无法弄清楚。我想要实现的是,
我将细节从一个视图传递到angularjs app中的另一个视图。
我变得非常疯狂,无法完成这一点。
Index.cshtml
<a href="/Home/Details" class="label label-primary" ng-controller="TasksController" ng-model="c" ng-click="addTask(c)">View Details</a>
(c是我的目标,我试图将其传递到下一页)
TaskController.js
app.controller("TasksController", ['$scope' ,'TasksService', function ($scope, TasksService) {
$scope.addTask = function (currObj) {
var promiseAddTsk = TasksService.addProduct(currObj);
$scope.products = promiseAddTsk[0].Name;
console.log($scope.products);
};
}]);
TasksService.js
var productList = [];
this.addProduct = function (newObj) {
productList.push(newObj);
return productList;
};
Details.cshtml
<div ng-app="TasksModule" ng-controller="TasksController">
<div>
{{products}}
<span ng-model="products">{{products}}</span>
</div>
我可以看到&#34;姓名&#34;在scope.Products但它没有在details.cshtml中绑定。
答案 0 :(得分:1)
我建议你创建一个服务。然后,您需要将服务注入每个控制器并使用build in $q service返回承诺。该服务看起来像这样
.factory('Task', function($q) {
var lines = [];
return {
addTask: function(c) {
var deferred = $q.defer();
lines.push(c);
deferred.resolve(lines);
return deferred.promise;
}
};
});
然后你就像这样注入并使用控制器内的服务..
.controller('TasksController', function($scope, Task) {
$scope.addTask = function(c){
var lines = Task.addTask(c);
alert(lines);
}
});
答案 1 :(得分:0)
我相信你的HTML中缺少ng-model。
应该是:
<a href="/Home/Details" class="label label-primary" ng-click="addTask(c)" ng-model="c">View Details</a>
如果是设置任务的地方。如果以表格形式设置,则需要在设置任务的元素上设置ng模型,例如输入字段。
ng-model =“c”应该放在UI上设置任务的任何地方。同样在开始的时候,尝试将逻辑放在一个控制器中,并在概念验证之后将其分开。
<div ng-app="TasksModule" ng-controller="TasksController">
<a href="/Home/Details" class="label label-primary" ng-click="addTask(c)" ng-model="c">View Details</a>
<div>
{{products}}
<span ng-model="products">{{products}}</span>
</div>
</div>
然后“c”或您决定调用的任何内容将作为参数从该元素传递给函数addRask(c)。
您还可以将$ log注入工厂,并将$ log.debug变量注入变量以查看通过控制台设置的内容。
http://www.w3schools.com/angular/angular_directives.asp https://docs.angularjs.org/api/ng/directive/ngModel
编辑:确保正确设置ng-click =“addTask( product )”,从UI传递到角度控制器的变量名称必须与名称相同该模型。您可能必须将标签中的ng-click =“addTask(product)”移动到单独的按钮,并将标记专用于一个任务。
需要注意的是,您使用的是两个不同的控制器 - 任务和详细信息。用于在控制器之间共享数据的服务可以工作,但出于测试目的,请使用Index.cshtml中的相同控制器,就像在Details.cshtml中一样。