gpt4 book ai didi

javascript - 数据绑定(bind)未正确传递到 ng-repeat 内的 Controller 功能参数

转载 作者:行者123 更新时间:2023-12-02 17:07:31 24 4
gpt4 key购买 nike

我正在构建一个菜单,以允许用户更改我的网络应用程序上的 CSS。我的 js 方法采用一个字符串,然后将其添加到 bootswatch CDN 的 URI 中。当我对字符串进行硬编码时,该代码有效。当我使用数据绑定(bind)变量时,它变得很有趣。在开发人员工具中,我看到 HTML 显示了应有的数据绑定(bind)字符串。当我查看浏览器尝试获取哪个 URI 时,它实际上是将 {{style}} 添加到 URI 中。我对这一切都很陌生,所以请原谅任何巨大的缺陷。我愿意接受任何和所有建议。

这是我的开始 html 标签:

<html data-ng-app="app" lang="en" data-ng-controller="MainCtrl">

这是我的 Controller :

app.controller('MainCtrl', function($scope) {
// default on load for now
$scope.stylePath = '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css';
$scope.styles = ['slate', 'Cyborg', "Darkly", "journal", "Yeti"];
$scope.setStyle = function(styleName) {
$scope.stylePath = '//maxcdn.bootstrapcdn.com/bootswatch/3.2.0/' + styleName + '/bootstrap.min.css';
};
$scope.changePath = function() {
$scope.stylePath='//maxcdn.bootstrapcdn.com/bootswatch/3.2.0/slate/bootstrap.min.css';
};
});

如您所见,在我的数组中,我尝试了不同类型的引号以及小写和大写。 (单词必须小写)还值得注意的是,changePath() 工作得很好。当我尝试向 setStyle() 传递数据绑定(bind)值时,它从未起作用。向其传递字符串文字没有问题。

这是有问题的代码:

<div class="dropdown">
<a id="ThemeDropdown" class="btn btn-default" role="button" data-toggle="dropdown" title="Choose a theme">Themes <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="ThemeDropdown">
<li role="presentation" data-ng-repeat="style in styles">
<a role="menuitem" tabindex="-1" href="#/settings" ng-click="setStyle('{{style}}')">{{ style }}</a>
</li>
<li role="presentation">
<a role="menuitem" tabindex="-1" href="#/settings" ng-click="changePath()">hardcode slate</a>
</li>
<li>
<a role="menuitem" tabindex="-1" href="#/settings" ng-click="setStyle('darkly')">hardcode darkly</a>
</li>
</ul>
</div>

顺便说一句,在 setStyle() 调用时不在数据绑定(bind)周围加上引号会给我带来解析错误。

Error: [$parse:syntax] http://errors.angularjs.org/1.2.21/$parse/syntax?p0=style&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=12&p3=setStyle(%7B%7Bstyle%7D%7D)&p4=style%7D%7D)
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:6:450
at cb.throwError (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:168:341)
at cb.consume (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:169:266)
at cb.object (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:177:45)
at cb.primary (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:167:478)
at cb.unary (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:174:160)
at cb.multiplicative (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:173:402)
at cb.additive (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:173:262)
at cb.relational (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js:173:126) <a role="menuitem" tabindex="-1" href="#/settings" ng-click="setStyle({{style}})">
angular.js:10023

可以做我正在做的事情吗?我做错了什么?

最佳答案

<a role="menuitem" tabindex="-1" href="#/settings" ng-click="setStyle('{{style}}')">{{ style }}</a>

应该是

<a role="menuitem" tabindex="-1" href="#/settings" ng-click="setStyle(style)">{{ style }}</a>

无需在调用内使用任何绑定(bind)。

关于javascript - 数据绑定(bind)未正确传递到 ng-repeat 内的 Controller 功能参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25112378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com