我在我的应用程序中使用 Angular Material。在 ng-repeat 列表中我有字段。但是我希望用户能够向文本添加常用的前缀。例如,如果他想输入“小时:5”,他可以单击一个按钮,将“小时:”添加到输入字段,这样他只需输入 5。
这就是我现在所拥有的: HTML:
<md-menu>
<md-button ng-click="$mdOpenMenu($event)" class="ps-button" aria-label="Open sample menu">
+
</md-button>
<md-menu-content class="ps-selectcontainer">
<md-menu-item ng-repeat="remark in remarks"><md-button class="ps-button" ng-click="addRemark(remark, this)">{{remark}}</md-button></md-menu-item>
</md-menu-content>
</md-menu>
</md-input-container>
输入容器:
<md-input-container md-no-float class="md-block" >
<input ng-model='form_noteName' type="text" placeholder="Note" maxlength="255" required>
</md-input-container>
在 JavaScript 中:
$scope.addRemark = function (remark, repeatScope){
if(repeatScope.form_noteName){
repeatScope.form_noteName = remark + repeatScope.form_noteName;
$scope.stupidvariable = repeatScope.form_noteName;
return;
}
repeatScope.form_noteName = remark;
return;
};
这个想法是,当我单击 md 菜单中的某个项目时,它会打开函数 addRemark 传递范围,在 addRemark 中它会修改范围并且输入字段已更改。
但变量 form_noteName 没有改变,我不知道我做错了什么。我在这里做错了什么?
编辑:这是一个具有类似方法的 Plunker:http://plnkr.co/edit/1j3F64YyJPftxLf8QaZD?p=preview
谢谢:)
最佳答案
您不能进行两次 ng-click。您需要将两个语句放在一起并用分号分隔,如下所示:
ng-click="addRemark(remark, this); testvariable='remark'"
此外,您可能不需要“this”,因为“remark”将给出特定元素。但是,我没有足够的代码来确定。
关于javascript - 更改函数中的 ng-repeat 范围不会更新范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39332718/