【问题标题】:how to serialize div in angular on load?如何在加载时以角度序列化 div?
【发布时间】:2014-09-19 12:41:13
【问题描述】:

我正在使用 Angular js 版本 1.2。

基本上我是在基于屏幕的服务器中创建对象,为此我需要传递给服务器

如何使用 angularjs 将屏幕的 'div' onload 转换为 json?

html 看起来像这样:

<div id="settingsholder"  ng-controller="MyCtrl">
  <input ng-model="user.firstName" />
  <input ng-model="user.lastName" />
  <input type="button" ng-click="showJson()" value="Object To JSON" />
    <hr/>  
    {{user | json}}
</div>   

js:

    function MyCtrl($scope) {
        $scope.user = { };
    }

jsfiddele:http://jsfiddle.net/bpbhat777/2grw1je0/

我希望它是这样的 http://jsfiddle.net/bpbhat777/dbg2u5ck/

不设置 firstname 和 lastName 。它不需要是 firstname 和 lastName ,在屏幕中 ng-model 可以是任何对象

【问题讨论】:

  • 用例是什么?
  • 在服务器中我正在创建基于屏幕的对象 :)
  • 没有太多解释。把更多的精力放在问题上,你会得到适合问题的答案

标签: javascript html angularjs angularjs-scope


【解决方案1】:
<div id="settingsholder"  ng-controller="MyCtrl">
  <input ng-model="user.firstName" ng-init="user.firstName=''" />
  <input ng-model="user.lastName" ng-init="user.lastName=''" />
  <input type="button" ng-click="showJson()" value="Object To JSON" />
    <hr/>  
    {{user | json}}
</div>

并从控制器中删除$scope.user = { };

没有 ng-init

 <div id="settingsholder"  ng-controller="MyCtrl">
      <input ng-model="user.firstName"  />
      <input ng-model="user.lastName"/>
      <input type="button" ng-click="showJson()" value="Object To JSON" />
        <hr/>  
        {{user | json}}
 </div>

 function MyCtrl($scope) {
     $scope.user = {firstName:'',lastName:''};
 }

【讨论】:

  • 我不想这样给出`$scope.user = {firstName:'',lastName:''};`我不知道内容会是什么,现在我正在使用ng-仅初始化 :)
【解决方案2】:

我不知道它有什么用。但如果你真的需要 ng-init 可能是选项

<div id="settingsholder" ng-controller="MyCtrl">
    <input ng-model="user.firstName" ng-init="user.firstName=''" />
    <input ng-model="user.lastName" ng-init="user.lastName=''" />
    <input type="button" ng-click="showJson()" value="Object To JSON" />
    <hr/>{{user | json}}

查看demo fiddle

【讨论】:

  • 你可以做这样的事情$scope.display = angular.toJson($scope.user); 然后在视图上你可以调用{{display}} 但你也必须在控制器级别初始化
【解决方案3】:

您正在寻找angular.toJson()

https://docs.angularjs.org/api/ng/function/angular.toJson

有几种方法可以在页面加载时更新 $scope。我个人更喜欢用init()

$scope.init = function() {
    $scope.json = angular.toJson($scope.user);
}

$scope.init();

小提琴:http://jsfiddle.net/dbg2u5ck/2/


在阅读并重新阅读您的问题后,在我看来,您想用预加载的 html 值(在您的情况下为空字符串)填充 $scope。这不是 Angular 的工作方式,如果你想用 html 值填充 $scope,请花时间阅读这篇文章:Angular js init ng-model from default values

【讨论】:

  • 这不会填充对象属性
  • 我现在明白他想要什么了 :) 我相应地更新了小提琴。
猜你喜欢
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2020-11-08
相关资源
最近更新 更多