小编Gar*_*roz的帖子

AngularJS - 无法在链接函数中动态更改指令模板

谨防

接受的解决方案将破坏指令replace: true:HTML不会被替换,使用中的特定CSS选择器将不再起作用等.


我希望我的指令,通过观察收到来自父控制器属性字符串动态地改变它的模板,所以我用$compile这个答案连同$observe一个有趣的教程的这一小部分,但可惜它不工作,像显示在这个plunkr.

关于错误

如果在脚本中的AngularJS之前包含jQuery,则replaceWith调用会抛出以下错误:

TypeError: Cannot read property 'ownerDocument' of undefined
Run Code Online (Sandbox Code Playgroud)

但是如果我删除jQuery,强制AngularJS使用它的jqLit​​e,同样的部分会抛出这个错误,让像我这样的jQuery不可知的东西更清晰:

TypeError: Failed to execute 'replaceChild' on 'Node': parameter 1 is not of type 'Node'.
Run Code Online (Sandbox Code Playgroud)

即使我很清楚我没有将有效的"节点"类型对象传递给我,我replaceWith也不知道如何处理这种情况,因为我期望$compile能够完成这项工作.

我所知道的唯一的事情是console.log(tplContent)看起来像这样(我承诺是对的吗?):

Object
{
  config: Object
  data: "<script type="text/ng-template" id="templateId.html">
  ?  <p>TEMPLATE A</p>
  ?</script>"
  headers: function (d)
  ng339: 10
  status: 200
  statusText: "OK"
}
Run Code Online (Sandbox Code Playgroud)

console.log($compile(tplContent)(scope))返回一个数组与第一个和唯一的项目具有相同的对象: …

jquery templates promise angularjs angularjs-directive

5
推荐指数
1
解决办法
766
查看次数

突然咕噜声的构建失败了

我习惯于grunt build成功完成任务,但由于我将项目编辑与其他一些开发人员同事合并,它突然失败并出现了我以前从未见过的错误:

grunt build
Loading "imagemin.js" tasks...ERROR
>> Error: Cannot find module 'process-nextick-args'
Loading "cdnify.js" tasks...ERROR
>> Error: Cannot find module 'abbrev'
Loading "grunt-karma.js" tasks...ERROR
>> Error: Cannot find module 'uglify-js'

Running "clean:dist" (clean) task
>> 0 paths cleaned.

Running "wiredep:app" (wiredep) task
Warning: Cannot find module './lang/clone' Use --force to continue.

Aborted due to warnings.


Execution Time (2015-09-25 09:44:30 UTC)
wiredep:app  31ms
Total 31ms
Run Code Online (Sandbox Code Playgroud)

在Gruntfile.js中,我评论imagemincdnify输出concurrent:distbuild任务.

我做错了什么?

这里有一些关于我正在使用的东西版本的信息:

node -v …
Run Code Online (Sandbox Code Playgroud)

dependencies build npm gruntjs grunt-contrib-uglify

3
推荐指数
1
解决办法
3932
查看次数

p-fileUpload 不能多次启动

我将尝试解释这个组件发生了什么,我已经这样定义了组件

<p-fileUpload #fileUpload accept=".csv,.txt" maxFileSize="1000000" customUpload="true" (uploadHandler)="uploadFile($event)">
Run Code Online (Sandbox Code Playgroud)

在我的包 Json 上,我有这个“primeng”:“^4.1.0-rc.3”,并且在 js 文件中有这个方法

 uploadFile(event) {

    for (let file of event.files) {
        this.uploadedFiles.push(file);
    }

    this.uploadFileService.doSomething(this.uploadedFiles[0]).subscribe(x => {
        this.fileInfo = x;
        ..do some stuff..

    });
}
Run Code Online (Sandbox Code Playgroud)

它第一次按预期工作(显示组件选择、上传和取消的 3 个按钮)并让我从弹出窗口中选择文件,然后该过程继续调用 uploadFile 方法;问题是,一旦它完成,如果我尝试再次上传同一个文件,它不允许我这样做。它只允许我选择文件,但从不启用上传按钮,当然,从不调用 uploadFile 方法。但是如果我选择另一个不同于以前的文件,它会按预期工作,这意味着调用 uploadFile 方法。

我在用

this.fileUpload.clear();
Run Code Online (Sandbox Code Playgroud)

只是为了清除向用户显示上传文件的部分

有什么建议吗?

angularjs primeng angular

3
推荐指数
2
解决办法
7918
查看次数

为什么将angular称为单页应用程序

与Angular(JS)相关的最常见术语之一是SPA

  1. 为什么Angular(JS)被称为单页应用程序?
  2. 即使URL在Angular(JS)站点中更改,也将其称为SPA吗?
  3. 使用Angular(JS)创建的所有站点是否真的是一个页面应用程序?如果不是为什么?

我希望这些问题的答案在Angular(JS)上能更清晰。

angularjs single-page-application angular

3
推荐指数
2
解决办法
8480
查看次数

使用ng-model动态禁用跨度

我下面制作一个自定义编辑这个例子中<span>使用ngModelController: https://docs.angularjs.org/api/ng/type/ngModel.NgModelController#example

我现在要做的是能够通过指令内部的逻辑动态禁用对该字段的编辑.通过禁用它我的意思是用户根本无法编辑文本,它只会显示为常规文本.

这是一个样本plunkr:

来自plunkr的代码:

angular.module('app', [])


.controller('Ctrl', function ($scope) {
    $scope.stuff = "test";
  })
  .directive('contenteditable',
    function ($log) {
        'use strict';
        return {
            restrict: 'A',
            require: 'ngModel',
            scope: {
            },
            link: function ($scope, $element, $attributes, ngModel) {
                if (angular.isUndefined(ngModel)) {
                    $log.warn('ngModel is not defined');
                    return;
                }
                function read() {
                    ngModel.$setViewValue($element.text());
                }
                ngModel.$render = function () {
                    $element.html(ngModel.$viewValue || '');
                };
            }
        };
    }
);
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

javascript angularjs angular-directive

2
推荐指数
1
解决办法
418
查看次数

仅显示AngularJS中的日期

我有一个像这样的JSON数组:

[
{
    "user": "345",
    "createdOn": "2015-09-01 13:17:22"
},
{
    "user": "432",
    "createdOn": "2015-09-01 13:27:56"
}
Run Code Online (Sandbox Code Playgroud)

]

<div>标签中,我这样做:

 <div> class="row" ng-repeat="item in array"             
         {{item.createdOn}}
 </div>     
Run Code Online (Sandbox Code Playgroud)

输出为:2015-09-01 13:50:59,但我不希望显示时间部分,即所需的输出仅为2015-09-01。我尝试使用filter但未成功。请给我一些知识。

html javascript angularjs

0
推荐指数
1
解决办法
8742
查看次数