我有以下ckEditor指令。在底部是我從例子看到如何在編輯器中設定的數據的兩個變化:
app.directive('ckEditor', [function() {
return {
require: '?ngModel',
link: function ($scope, elm, attr, ngModel) {
var ck = null;
var config = attr.editorSize;
if (config == 'wide') {
ck = CKEDITOR.replace(elm[0], { customConfig: 'config-wide.js' });
} else {
ck = CKEDITOR.replace(elm[0], { customConfig: 'config-narrow.js' });
}
function updateModel() {
$scope.$apply(function() {
ngModel.$setViewValue(ck.getData());
});
}
$scope.$on('modalObjectSet', function (e, modalData) {
// force a call to render
ngModel.$render();
});
ck.on('change', updateModel);
ck.on('mode', updateModel);
ck.on('key', updateModel);
ck.on('dataReady', updateModel);
ck.on('instanceReady', function() {
ngModel.$render();
});
ck.on('insertElement', function() {
setTimeout(function() {
$scope.$apply(function() {
ngModel.$setViewValue(ck.getData());
});
}, 1000);
});
ngModel.$render = function (value) {
ck.setData(ngModel.$modelValue);
};
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
}])
有人能告訴我是什麼樣的區別:
ck.setData(ngModel.$modelValue);
ck.setData(ngModel.$viewValue);
,哪些應該我使用。我看了看角文檔和它說:
$viewValue
Actual string value in the view.
$modelValue
The value in the model, that the control is bound to.
我不知道,當他寫這篇文檔中:-(
所以基本上''viewValue'總是一個字符串? – cdmckay
正如文檔所說:'$ viewValue:視圖中的實際字符串值.'。所以,是的。 – tennisgent
另一個說明。當一個' value爲空時,'$ modelValue'屬性爲undefined,而$ viewValue爲空字符串。如果你正在嗅探'$ modelValue'的「長度」,這將不會起作用,但是'$ viewValue'會起作用。 – BradGreens