gpt4 book ai didi

javascript - 在 Angular.js 的 ngModel 中使用表达式

转载 作者:可可西里 更新时间:2023-11-01 02:56:28 24 4
gpt4 key购买 nike

在我的 Controller 中提供代码:

$scope.entity = {
firstName: 'Jack',
lastName: 'Bauer',
location: {
city: 'New York'
}
};
$scope.path = 'location.city';

如何将 ngModel 动态绑定(bind)到 path 指定的 entity 的属性?

我试过类似的方法,但无济于事:

<input ng-model="'entity.' + path">

最佳答案

Slava,我不太确定这是否是个好主意。但无论如何,您需要通过将此属性添加到您的输入 ng-model-options="{ getterSetter: true } 来让您的模型 getterSetter 知道。然后你需要在你的 Controller 中使用一个函数来从一个 sting 中构建一个 getterSetter。

<input type="text" ng-model="propertify('entity.' + path)" ng-model-options="{ getterSetter: true }">

这就是生成的模板的样子。

幸运的是,angular 有一个 $parse 服务,可以让这更容易。所以像这样的东西需要在你的 Controller 中,或者在注入(inject)服务中更好。

  $scope.propertify = function (string) {
var p = $parse(string);
var s = p.assign;
return function(newVal) {
if (newVal) {
s($scope,newVal);
}
return p($scope);
} ;
};

这将返回一个为您处理此问题的 getter-setter 函数。在 this plunk 中查看实际效果

关于javascript - 在 Angular.js 的 ngModel 中使用表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153769/

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