[英]Pass function in ng-model
例如,是否可以將函數傳遞給 ng-model
<input type="text" name="email" class="form-control" ng-model="createModel('email')" ng-change="addProperty(email,'email')" email required placeholder="Email">
ng-change 工作正常,但ng-model="createModel(email)"
顯示此錯誤
> Expression 'createModel('email')' is non-assignable. Element: <input
> type="text" name="email"....
在控制器中我有://我現在只想傳遞值
$scope.createModel = function(modelName){
console.log("Model name"+modelName);
}
我在互聯網上看到人們這樣做的例子
看起來 AngularJS 在 1.3 版中添加了“getter”“setter”支持
您可以滾動到其 ngModel 文檔頁面的底部:
https://docs.angularjs.org/api/ng/directive/ngModel
這允許您在 ngModel 屬性中指定方法而不是變量。 該方法應采用可選參數。 如果傳遞了一個參數,它應該存儲該值,如果沒有傳遞參數,它應該返回一個值。
您可以在另一個 Stack Overflow 答案中看到一個示例: https : //stackoverflow.com/a/28224980/984780
無法將函數傳遞給ng-model
因為 Angular 必須能夠在用戶更改輸入值時設置該值。 你不能告訴 Angular 在值改變時調用一個函數。 您可以做的是使用 getter 和 setter 方法在范圍上定義一個屬性,例如:
var email = 'test@test.com';
Object.defineProperty($scope, 'email', {
get: function() {
return email;
},
set: function(value) {
email = value;
}
});
但我會說你最好為屬性創建一個 $watch ,因為其他 Angular 開發人員會更熟悉它。
編輯:要根據其他值綁定到不同的模型,您仍將綁定到ng-model
的相同屬性,但您可以在手表中將其交換。 像這樣的東西:
var model1 = {
value: 'hi'
};
var model2 = {
value: 'hello'
};
$scope.model = model1;
$scope.checkboxValue = true;
$scope.$watch('checkboxValue', function(value) {
if (value) {
$scope.model = model1;
} else {
$scope.model = model2;
}
});
和:
<input type="text" ng-model="model.value">
<input type="checkbox" ng-model="checkboxValue">
這將根據是否選中復選框來更改文本輸入的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.