Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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将jquery插件转换为指令_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs将jquery插件转换为指令

Javascript Angularjs将jquery插件转换为指令,javascript,angularjs,Javascript,Angularjs,我试图在angularjs中使用它,并将其放入指令中。我遇到的问题是,当复选框默认为选中时,我必须“双击”。当在指令之外本机使用时,不会发生这种情况,因此我假设我对指令做了一些错误的操作 这是我的代码,是否有任何指令看起来不合适或缺失的地方 angular.module('directives', []).directive('ccCheckbox', function () { 'use strict'; return { require: '?ngModel

我试图在angularjs中使用它,并将其放入指令中。我遇到的问题是,当复选框默认为选中时,我必须“双击”。当在指令之外本机使用时,不会发生这种情况,因此我假设我对指令做了一些错误的操作

这是我的代码,是否有任何指令看起来不合适或缺失的地方

angular.module('directives', []).directive('ccCheckbox', function () {
    'use strict';

    return {
        require: '?ngModel',
        restrict:'A',
        link: function ($scope, elm, attrs, controller) {

            elm.iphoneStyle({
                checkedLabel : attrs.ccCheckboxChecked,
                uncheckedLabel : attrs.ccCheckboxUnChecked,
                onChange: function(elem, value) {
                    controller.$setViewValue(value);
                    $scope.$apply();
                }
            });
        }
    };
});
谢谢

编辑:

这是我正在使用的标记:

<input type="checkbox" value="1" ng-model="users.online" cc-checkbox cc-checkbox-checked="Online" cc-checkbox-unchecked="Offline" checked="checked">


问题似乎是您需要调用$setViewValue从DOM加载初始值。在上,查看script.js选项卡了解最后一个示例:它在链接函数中调用
ctrl.$setViewValue(elm.html())
。你可能需要这样做。嗯。。。似乎它可能是对的,尝试过,但没有成功。这实际上是一个间歇性问题,有时它会在第一次单击时更改,有时则不会。请尝试根据
attrs.checked
的值设置初始视图值,而不是
elm.html()
(最初调用
$setViewValue()
时可能并不总是设置此值)。