angularjs - exporterolderexcelcompatibility - Error:[ngModel: nonassign] La expresión no es asignable
ui-grid columndefs (3)
Como mencionó HackedByChinese, no puedes vincular ng-model a una función, así que prueba esto:
<input type="text" ng-if="displayNameData[0].show"
ng-model="displayNameData[0].value">
O si desea que este control sea visible, puede crear una directiva, agregar una función a $parsers
que establecerán un valor vacío de acuerdo con la show
:
angular.module(''yourModule'').directive(''bindIf'', function() {
return {
restrict: ''A'',
require: ''ngModel'',
link: function(scope, element, attrs, ngModel) {
function parser(value) {
var show = scope.$eval(attrs.bindIf);
return show ? value: '''';
}
ngModel.$parsers.push(parser);
}
};
});
HTML:
<input type="text" bind-if="displayNameData[0].show"
ng-model="displayNameData[0].value">
Intentando mostrar un valor de columna de una colección de cuadrículas en función de otro valor en esa misma fila. El usuario puede seleccionar / cambiar valores en un modal que contiene una cuadrícula con valores. Cuando el modal se cierra los valores se devuelven. En ese momento me gustaría establecer un valor para ''También conocido como'':
html:
Also known as: <input type="text" `ng-model="displayValue(displayNameData[0].show,displayNameData[0].value)">`
Creé una función en el alcance para seleccionar el valor solo cuando el valor ''mostrar'' es verdadero:
$scope.displayValue = function (show, val) {
if (show) {
return val;
}
else {
return '''';
}
}
Sin embargo cuando cierro el modal me sale un error:
Error: [ngModel:nonassign] Expression ''displayValue(displayNameData[0].show,displayNameData[0].value)'' is non-assignable.
Referencia de plnkr: http://plnkr.co/edit/UoQHYwAxwdvX0qx7JFVW?p=preview
Usar ng-value en lugar de ng-model funcionó para mí.
Puedes enlazar ng-model
para que funcione
Encuadernación a un getter / setter
A veces es útil vincular ngModel a una función getter / setter. Un captador / definidor es una función que devuelve una representación del modelo cuando se le llama con cero argumentos, y establece el estado interno de un modelo cuando se le llama con un argumento. A veces es útil usar esto para modelos que tienen una representación interna que es diferente de lo que el modelo expone a la vista.
index.html
<div ng-controller="ExampleController">
<form name="userForm">
<label>Name:
<input type="text" name="userName"
ng-model="user.name"
ng-model-options="{ getterSetter: true }" />
</label>
</form>
<pre>user.name = <span ng-bind="user.name()"></span></pre>
</div>
app.js
angular.module(''getterSetterExample'', [])
.controller(''ExampleController'', [''$scope'', function($scope) {
var _name = ''Brian'';
$scope.user = {
name: function(newName) {
// Note that newName can be undefined for two reasons:
// 1. Because it is called as a getter and thus called with no arguments
// 2. Because the property should actually be set to undefined. This happens e.g. if the
// input is invalid
return arguments.length ? (_name = newName) : _name;
}
};
}]);