【问题标题】:pass AngularJS object value from ng-repeat to AngularJS function将 AngularJS 对象值从 ng-repeat 传递给 AngularJS 函数
【发布时间】:2014-10-01 06:08:54
【问题描述】:

我正在拼命地尝试将 Angular 对象值传递给函数。各种尝试都没有取得任何进展,这是我唯一一次在硬编码值时让它正常工作。

MVC 视图:

<tr ng-repeat="project in projects | filter:search:strict">
<td><span><a style="cursor:default" title="Ändra i projektet.." id="{{project.id}}" data-ng-click="opents('/EditProject/', '{{ project.id }}')">{{ project.id }}</a></span></td>

角函数:

$scope.opents = function (tsUrl, id) {
        alert('/EditProject/'+ $attrs);
        alert(tsUrl);
        alert(id);
        alert(tsUrl + id);
        TINY.box.show({ url: tsUrl + id });
    };

我尝试从视图中的调用接收不同的值,因此出现了许多警报。无法从网上找到解决方案,希望有人知道解决方案。

【问题讨论】:

  • 您不能在 ng-click 中设置任何 JS 代码。通常“警报”不起作用。它是 Angular 提供的特定 JS 极简处理器。角度方式是在指令中嵌入 Jquery 或任何外部代码。否则在角度摘要期间是否不考虑它,并且您的 ng-repeat 不知道指令之外的 DOM 更改...

标签: javascript angularjs model-view-controller


【解决方案1】:

试试:

ng-click="opents('/EditProject/', project.id)"

【讨论】:

  • 请帮我理解你的意思:) docs.angularjs.org/api/ng/directive/ngClick
  • 我刚才使用 HttpUtility 来传递 {{ project.id }} 以在调用函数时获得正确的转换。所以它把它变成一个javascript字符串。现在的问题是函数本身没有接收到该值,而是接收到文本 {{ project.id}},所以问题仍然存在...... :-)
  • project.id 应该被传递给 opents,而不需要quits 和 {{ 符号。可以更新代码吗?
  • 不幸的是没有。如果您看到我之前的回答,我检查了错误的属性...抱歉 :-)
  • 事情是,ng-click="..." 的内容正在像通常的 Javascript 一样被评估,不需要额外的 {{,也不需要编码。并且“项目”变量也充当通常的 JS 变量。只需更新代码以查看它为什么不起作用:) 或者更好地尝试使用 JSFiddle? jsfiddle.net
【解决方案2】:

更新:

从我的观点来看,我使用了 $event。

ng-click="opents('/PopUp2/EditProject/', $event)

在函数中:

$scope.opents = function (tsUrl, e) {
        var id = e.currentTarget.innerText;
        TINY.box.show({ url: tsUrl + id });

并得到了功能性响应。希望这对其他人有帮助!

【讨论】:

  • 这是一个相当棘手的方法。我想知道为什么它不适用于 ng-click="opents('/PopUp2/EditProject/',project)" 然后 $scope.opents = function(tsUrl,model) { var id = model.id; ... ?
猜你喜欢
  • 1970-01-01
  • 2016-11-28
  • 2017-06-20
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多