gpt4 book ai didi

javascript - 使用函数初始化 ng-model 字符串

转载 作者:行者123 更新时间:2023-11-30 17:23:15 25 4
gpt4 key购买 nike

有没有办法用函数有条件地将 ng-model 初始化为某个字符串?在下文中,ng-bind 有效,但 ng-model 无效:

var app = angular.module('app', []);
app.controller('mainCtrl', ['$scope', function ($scope) {
$scope.value = "hello";
$scope.value2 = "hello2";
$scope.get = function (bool) {
return (bool) ? "value" : "value2";
};
}]);

<html ng-app="app">
<body ng-controller="mainCtrl">
<div ng-bind="{{get(true)}}"></div>
<input ng-model="{{get(true)}}" />
</body>
</html>

澄清编辑:我有两个单独的数据集,给定的输入可能会影响它们。它影响哪一个取决于模型中其他地方的值。有几十种不同的输入类型,我想避免将 ng-switch 写入每一种类型,因为那样会变得相当困惑。

示例: http://plnkr.co/edit/fKlbN8qcjGjzqjRayviT?p=preview

最佳答案

这是有条件地设置模型值的最简洁、最简单的方法。

<input ng-model="yourModel" />然后在 Controller 中:

$scope.yourModel = (condition) ? 'hello1' : 'hello2';

编辑澄清的问题

好的,我想出了一些使用 ng-init 的东西.显然你不能使用 ng-model 的函数.我还没有尝试过,所以我很惊讶它没有用。

我放弃了自定义指令,因为它不需要。

您的 HTML 将是这样的:

<div ng-init="input1 = getBinding(setB,2)">
<input ng-model="input1" /> <!-- shows bbb -->
</div>
<div ng-init="input2 = getBinding(setA,0)">
<input ng-model="input2" /> <!-- shows a -->
</div>
<div ng-init="input3 = getBinding(setA,2)">
<input ng-model="input3" /> <!-- shows aaa -->
</div>

你的 Controller :

app.controller('mainCtrl', ['$scope', function ($scope) {
$scope.setA = ['a', 'aa', 'aaa'];
$scope.setB = ['b', 'bb', 'bbb'];

$scope.getBinding = function(set, index)
{
return set[index];
}
}]);

所以继续前进,而不是设置像 input1 = ... 这样的名称, input2 = ...等等,如果你要使用中继器,你可以使用 $index 值来创建模型名称,如下所示:

<div ng-repeat="setItem in setA" ng-init="setA$index = getBinding(setA, $index)">
<input ng-model="setA$index" /> <!-- shows 3 inputs of values a, aa, aaa -->
</div>

<div ng-repeat="setItem in setB" ng-init="setB$index = getBinding(setB, $index)">
<input ng-model="setB$index" /> <!-- shows 3 inputs of values b, bb, bbb-->
</div>

演示 - http://plnkr.co/edit/70QG3s3ovppkXcUqOmPj?p=preview

希望你能想出你的解决方案。

关于javascript - 使用函数初始化 ng-model 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763738/

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