Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中,与模型相关的视图数据应该存储在哪里?_Javascript_Angularjs_User Interface_Model_State - Fatal编程技术网

Javascript 在AngularJS中,与模型相关的视图数据应该存储在哪里?

Javascript 在AngularJS中,与模型相关的视图数据应该存储在哪里?,javascript,angularjs,user-interface,model,state,Javascript,Angularjs,User Interface,Model,State,我正在使用以下isText属性在视图中的下拉列表和文本输入字段之间切换(组合ng click=“family.isText=!family.isText”和ng show),同时遍历所有字体系列 font = { name: null, style: null, families: [{ name: null, parent: null, isText: true // <-- }] }; font={ 名称

我正在使用以下
isText
属性在视图中的下拉列表和文本输入字段之间切换(组合
ng click=“family.isText=!family.isText”
ng show
),同时遍历所有字体系列

font = {
    name: null,
    style: null,
    families: [{
        name: null,
        parent: null,
        isText: true // <--
    }]
};
font={
名称:空,
样式:空,
家庭:[{
名称:空,
父项:null,

isText:true//您的后端服务应该能够清除您不希望包含在其中的信息,但要提供一个包含如此少细节的好解决方案确实很困难。您能给我们一个html、控制器和服务/工厂的示例吗?

我认为您可以使用一种内容提供商来实现这一点。并将其发送给我们o您的后端

您可以这样做:

(function() {
'use strict';
angular.module('some.module')
    .factory('myFontContentProvider', [contentProvider]);

function contentProvider() {
   var content = this;
   var name = null;
   var style = null;
   var families: [{
       name: null,
       parent: null
   }]

   content.setName = function(n) {
        name = n;
   }
   content.getName = function() {
        return name;
   }

   /* continue with your getters and setters here */

   return content;
}
然后在控制器中,使用工厂执行如下映射:

(function() {
'use strict';
angular.module('some.module')
    .controller('yourController', ['myFontContentProvider',yourCtrl]);

function yourCtrl(contentProvider) {
   var vm = this;
   /* mapping here */
   vm.getName = contentProvider.getName;
   vm.setName = contentProvider.setName;
   /* etc */
}
最后,在DOM中,您有:

<div ng-controller="yourController as ctrl"
<!-- to get your value -->
<span ng-bind="ctrl.getName()"></span>
<!-- etc --> 


使用一些ng单击=“ctrl.setYOURPROPERTY()”要调用factory函数并设置值

,您可以创建一个通用属性白名单或黑名单函数,并将其附加到所有模型。在发送到服务器之前调用它。我可以在后端执行此操作,但我发现它未经优化以发送我无论如何都不会使用的数据。我编辑了我的帖子以添加HTML模板。
<div ng-controller="yourController as ctrl"
<!-- to get your value -->
<span ng-bind="ctrl.getName()"></span>
<!-- etc -->