我有这个表单部分(简化问题):
public string CalculateElapsedPercent(DateTime endTime, DateTime startTime)
{
string result = string.Empty;
DateTime currentTime = DateTime.Now;
if (currentTime > endTime)
{
result = " (100 %)";
return result;
}
long nr = (currentTime - startTime).Ticks;
long dr = (endTime - startTime).Ticks;
double value = ((double)nr / (double)dr) * 100.0;
result = " (" + value.ToString() + " %)";
return result;
}
而我真的想做这样的事情:
<label>firstitem brand: </label><input ng-model="ctrl.object.item_attributes[0].brand">
<label>firstitem model: </label><input ng-model="ctrl.object.item_attributes[0].name">
<label>seconditem brand: </label><input ng-model="ctrl.object.item_attributes[1].brand">
<label>seconditem model: </label><input ng-model="ctrl.object.item_attributes[1].name">
作为一名Angular新手,我很难理解如何通过我的指令设置ng-model。我已经尝试直接通过范围传递它,并通过指令的链接功能,但没有运气。有什么想法吗?&#39;
编辑:
我按照Steff的建议尝试了以下指令:
<form-directive item="ctrl.object.item_attributes[0]"></form-directive>
<form-directive item="ctrl.object.item_attributes[1]"></form-directive>
我的输入格式如下:
function fixIt () {
return {
restrict: 'EA',
require: "ngModel",
link: function (scope, elem, attrs, ngModel) {
attrs.ngModel = scope.comp
// scope.com = object.item_attributes[i]
}
}
};
angular
.module('app')
.directive('fixIt', fixIt);
我收到以下错误:angular.self-7f8df3e ... .js?body = 1:13921错误:[ngModel:nonassign] Expression&#39;&#39;是不可转让的。
如果我在输入中给ng-model一个初始值,那么错误就会消失,但我在fixIt指令里面的链接函数中没有做任何事情。
答案 0 :(得分:0)
如果要通过指令设置ng-model,可以考虑以下方法:
指令代码
(function(angular) {
'use strict';
angular.module('your_module_name',[]).directive('your_directive_name', function() {
return {
restrict: "EA",
require: 'ngModel',
link: function (scope, elem, attrs, ngModel) {
// accessing the ng-model value by using attr.ngModel
}
};
});
})(window.angular);
请记住包含您的指令:
var myApp = angular.module('myapp', [ 'your_module_name']);
HTML代码
<input your-directive-name ng-model="">
我将这个方法用于我的闪亮指令,它运行得很好。 对于表单验证和其他特定于输入的设置,您可以查看此stackoverflow问题:Angularjs: form validation and input directive
如果对您的问题有任何误解,请告诉我,并希望这可以帮助您:)。
修改强>
我不确定为什么你将ng-model
留空并将$scope
变量绑定在你的指令中。也许正在尝试
<div ng-repeat="item in ctrl.object.item_attributes">
<input fix-it ng-model="item">
</div>